1 / 2
文档名称:

算法面试高频题精讲:时间复杂度与空间复杂度分析.doc

格式:doc   大小:146KB   页数:2页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

算法面试高频题精讲:时间复杂度与空间复杂度分析.doc

上传人:小辰GG 2022/4/22 文件大小:146 KB

下载得到文件列表

算法面试高频题精讲:时间复杂度与空间复杂度分析.doc

相关文档

文档介绍

文档介绍:算法?试?频题精讲:时间复杂度与空间复杂度分析
在各种类型的刷题?站中,?部分题?要求答案代码执?时间都是 1秒钟。所以我们在做题之前需要优先考虑我们即将要实现的算法能否在 1秒钟之内完
成,这就要求我们了解 1秒钟?概能做什么算法?试?频题精讲:时间复杂度与空间复杂度分析
在各种类型的刷题?站中,?部分题?要求答案代码执?时间都是 1秒钟。所以我们在做题之前需要优先考虑我们即将要实现的算法能否在 1秒钟之内完
成,这就要求我们了解 1秒钟?概能做什么量级的运算。在特定的数据范围内我们的算法会不会超时,所以对算法的时间复杂度预估就 ?常重要。
时间复杂度
说到排序,我们的脑??总会出现?种?熟能详的排序算法,如插?排序、冒泡排序,快速排序和归并排序。其中插 ?排序、冒泡排序的时间复杂度是
o(n人2),快速排序、归并排序的时间复杂度是 o(nlogn)。那么这个时间复杂度是什么意思呢?
?家都知道,计算机执?程序是通过?进制指令来执?的, ?进制数据最基本的操作有 一一与(&)、或(|)、?()、异或(),基本四则运算( +、
-、*、/),逻辑运算( >、<、=)是转换成有限次 ?进制指令来执 ?,次数不跟参与计算的数据 ??有关,我们称之为复杂度。
?家请看如下代码:
int sum = 0;
for (int i = 0;i < N;i++) {
for (int j = 0;j < N;j++) {
sum++;
}
}
这段代码中,int sum = 0 执?了?次, int i = 0 执?了?次, i < N 执?了 N 次,i++ 执?了 N 次,int j = 0 执?了 N 次,j < N、j++ 和 sum++ 分别执?了 NA2 次,我
们假设赋值、?较、 ++,都是?个 cpu指令(事实上不是,可以拆分成更细的操作),那么这段代码执 ?的指令数量是 3*NT+3*N+2
时间复杂度关注的是影响速度的因素。上述式 ?,当 N增?, NA2 ? N ?得多,在 22 ?前,N的影响?乎可以忽略,因此我们忽略掉 N的部分,将上
述代码的时间复杂度简写为 o(N9)。
1秒钟
1秒钟能执 ?千万级别的运算,千万级别是什么概念呢?
n取值在百万-千万左右,o(n)的算法能在1秒钟内实现
n取值在?万左右,o(nlogn)的算法能在1秒钟内实现
n取值在?千左右,o(nA2)的算法能在1秒钟内实现
上?我们看了?个简单?案例的时间复杂度分析,和各种时间复杂度下 1秒钟能够完成多?量级的运算。如果你还是觉得不明?也没关系,在后?的专栏
中也会慢慢教你如何分析时间复杂度。下?我们来看下空间复杂度。
空间复杂度
空间复杂度
内存中基本单位是字节, 1个字节为8位,总共可以表? 2人8=256个值。
我们在设定变量时,?旦变量赋值成功,该变量就在内存中有??指向的地址,这?地址是操作系统分配的。该变量定义的时候需声明需要多少空间,操 作系统会给分配多少空间。?旦分配,这个变量在内存中就固定下来了。
我们在代码中需要声明每个变量的类型,?如 int,为4个字节的整型;double,为8个字节的浮点型;char,为?个字节的字符等等。 python由于可以不?
声明类