计算复杂度

本文深入探讨了算法的时间复杂度,包括常数阶、n阶、n²阶、n³阶、对数阶及n的对数阶的时间复杂度概念与计算方法。通过具体实例,解析了不同类型的循环结构如何影响算法的执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求极限
n->无穷大:
表达式n:–>无穷大
表达式1/n:—>0

(2n2+2n3+n)/n^3
2/n+2+1/n^2
n–》无穷大的时候:
2/n–》0
1/n^2-》0
2–》常数—》此算法的时间复杂度是n^3

时间复杂度的概念:
执行的次数和同数量级(n最高次方数)取商是常数
,那么同数量级就是这个算法的时间复杂度

时间复杂度的计算过程:
1 算出每一行语句执行的次数
2 求和,推导出一个n的表达式T(n)
3 找出同数量级的表示式(n的最高次方)
4 T(n)/同数量级–>常数,那么同数量级就是此算法的时间复杂度

举例1:
for i in range(n): #n
for j in range(5) : #5n
print(i,j) #5n
print(100) #1

T(n)=n+5n+5n+1=11n+1
第三步:同数量级:n
第四步:(11n+1)/n=11

时间复杂度:T(n)=O(n)

举例2:
常数阶
Temp=i;
i=j;
j=temp;

以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关
的常数。算法的时间复杂度为常数阶,时间复杂度记作T(n)=O(1)。
如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执

行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。

举例3:
n阶:
for i in range(n): #n
print(1) #n

2n–>n

时间复杂度:O(n)

举例4:
n2阶:
for i in range(n): #n
for j in range(n): #n^2
print(1) #n^2
T(n)=2n^2+n

时间复杂度:O(n)=n^2

举例5:
n^3阶:
for i in range(n): #n
for j in range(n): #n^2
for m in range(n): #n^3
print(1) #n^3
T(n)=2n3+n2+n

时间复杂度:O(n)=n^3

举例5:
对数阶
i=1; ①
while (i<=n) #x表示它的执行次数
i=i2; ② 每执行一次,都会2,所以运行次数为2的f(n)次方
解:语句1的频度是1,
设语句2的频度是f(n), 则:2^f(n)<=n;f(n)<=log2n
取最大值f(n)= log2n,

时间复杂度:T(n)=O(log2n )
技巧:循环n的时候,循环体里面有了一些条件,让n的执行次数变小,那么就可以认

为是log2n的时间负责度

举例6:
n的对数阶:nlog2n
for i in range(n):
i=1; ①执行1次
while (i<=n) #x表示它的执行次数
i=i*2;

时间复杂度:T(n)=O(nlog2n )

时间复杂度常用的记忆法:
1)访问数组中的元素是常数时间操作,或说O(1)操作。
2)一个算法如 果能在每个步骤去掉一半数据元素,如二分检索,通常它就取O(logn)

时间。
3)用strcmp比较两个具有n个字符的串需要O(n)时间。
4)常规的矩阵乘算法是O(n^3),因为算出每个元素都需要将n对 元素相乘并加到一起

,所有元素的个数是n^2。
5)指数时间算法通常来源于需要求出所有可能结果。例如,n个元 素的
6)集合共有2n个子集,所以要求出所有子集的算法将是O(2n)的。指数算
7)法一般说来是太复杂了,除非n的值非常小,因为,在 这个问题中增
8)加一个元素就导致运行时间加倍。

在计算时间复杂度时,我们一般使用的大O表示法,其时间复杂度,从小到大的排序是


(1) < (logn)< (n)< (nlogn)< (n^2)<…< (2^n)< (n!)

时间复杂度越大,时间越多,算的越慢

稳定排序
a=[1,2,-1,-2,3,5,3]
排序:用一个算法排序,排序之后,2个3(任意的多个相等值)的前后相对位置没有

发生变化。换句话说,在排序中,2个3没有进行过交换,那么就叫稳定排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值