【数据结构学习笔记】算法时间复杂度与同阶无穷大之捉大放小

本文深入探讨了时间复杂度的概念,通过比较O(n)与O(log2n)的增长速度,说明了O(n^2)大于O(n^2log2n)。文章以双层循环嵌套为例,解释了如何计算时间复杂度,并强调在分析时通常关注最深层循环次数,即最高阶无穷大。此外,还讨论了查找操作的时间复杂度,指出在分析时通常考虑平均和最坏情况,以确保算法在实际应用中的效率。
摘要由CSDN通过智能技术生成

常用的时间复杂度比较:(其中O是同阶无穷大的意思)
在这里插入图片描述
其实不用刻意去记,直接算就好了,比如O(n)级与O(log2 n)可以通过比较图像看出来,y=x增长明显快于y=log2 x,所以O(n)>O(log2 n),同理:O(n^3) >O(n^3log2 n)
在这里插入图片描述
可以通过口诀高效背诵,时间复杂度由小到大:
在这里插入图片描述
下面来看看实例:
如果是双层循环嵌套,外层循环执行n次,那么内层循环执行n^2次
在这里插入图片描述
时间复杂度T(n)可以表示为O(n^2)+O(n)+C C为常数
顺序执行语句时间复杂度为常数级,可以忽略,
O(n)<O(n^2),n趋于无穷时,只需要考虑更高阶的O(n ^2)
所以T(n)=O(n^2),只用看最深层循环次数就行了(最高阶无穷大)

下面也是类似的计算方法
虽然判定条件为i<=n
但是有i*=2;
可以设循环次数为x
当i=2,x=1
i=2^2,x=2

i=2^m,x=m
当2^x>n时,跳出循环
x=log2 n,所以执行了log2 n次
也就是T(n)=O(log2 n),时间复杂度与log2 n同阶
在这里插入图片描述
当查找时,我们要分情况判断,比如下面这个算法,要找到一个元素,最好情况和最坏情况相差很大,可能第一个就找到,也可能最后找到。
如果开始就找到则为常数级复杂度,最后找到则要循环n次
如果平均算的话,要找的元素在每个地方概率都为1/n,那么如果在第i个位置则要找i次
计算循环次数=(1+2+3+…+n)* (1/n),也是一个n级复杂度
在这里插入图片描述
但我们一般不考虑最好情况,考虑平均时间复杂度和最坏情况时间复杂度比较多,更能防止实际中出现问题
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值