复杂度计算实例

1.常见时间复杂度计算举例

实例1

复杂度计算实例_第1张图片

实例1基本操作执行了2N+10次,通过推导大O阶方法知道,时间复杂度为 O(N)

实例2

复杂度计算实例_第2张图片

实例2基本操作执行了M+N次,有两个未知数M和N,时间复杂度为 O(N+M)

实例3

复杂度计算实例_第3张图片

实例3基本操作执行了100次,通过推导大O阶方法,时间复杂度为 O(1)

实例4

复杂度计算实例_第4张图片

实例4基本操作执行最好1次最坏N次,时间复杂度一般看最坏,时间复杂度为 O(N) 

实例5

复杂度计算实例_第5张图片

实例5基本操作执行最好N次最坏执行了(N*(N+1))/2次,通过推导大O阶方法时间复杂度一般看最坏,时间复杂度为 O(N^2)

实例6

复杂度计算实例_第6张图片

实例6基本操作执行最好1次,最坏O(logN)次,时间复杂度为 O(logN)
ps:logN在算法分析中表示是底数为2,对数为N。有些地方会写成lgN。(建议通过折纸查找的方式讲解logN是怎么计算出来的)

二分查找的时间复杂度为 O(log2n),其中n表示元素的数量
这是因为每次查找都可以将待查找区间缩小一半
所以最坏情况下需要进行的比较次数为 log2n  ---  O(logN)

实例7

 复杂度计算实例_第7张图片

实例7通过计算分析发现基本操作递归了N次,时间复杂度为O(N)

实例8

复杂度计算实例_第8张图片

实例8通过计算分析发现基本操作递归了2^N次,时间复杂度为O(2^N)
(建议画图递归栈帧的二叉树讲解)

复杂度计算实例_第9张图片

2.常见空间复杂度计算举例

实例1

复杂度计算实例_第10张图片

实例1使用了常数个额外空间,所以空间复杂度为 O(1)

实例2

复杂度计算实例_第11张图片

实例2动态开辟了N个空间,空间复杂度为 O(N)

递归空间复杂度计算:也是空间累加,但是不同的是空间可以重复利用

实例3

复杂度计算实例_第12张图片

实例3递归调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间
空间复杂度为O(N)

3.常见的时间复杂度

一般算法常见的复杂度如下:

复杂度计算实例_第13张图片

你可能感兴趣的:(#,数据结构,数据结构)