算法时间复杂性归纳
理解算法和其时间复杂度 #生活知识# #生活经验# #编程#
注明出处:博客原文
这一段很清晰的说明了时间复杂性的计算,已注明出处。
下面分别对几个常见的时间复杂度进行示例说明:
(1)、O(1)
Temp=i; i=j; j=temp; 1
以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。注意:如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。
(2)、O(n2)
2.1. 交换i和j的内容
sum=0; (一次) for(i=1;i<=n;i++) (n+1次) for(j=1;j<=n;j++) (n2次) sum++; (n2次) 1234
解:因为Θ(2n2+n+1)=n2(Θ即:去低阶项,去掉常数项,去掉高阶项的常参得到),所以T(n)= =O(n2);
2.2.
for (i=1;i<n;i++) { y=y+1; ① for (j=0;j<=(2*n);j++) x++; ② } 123456
解: 语句1的频度是n-1
语句2的频度是(n-1)*(2n+1)=2n2-n-1
f(n)=2n2-n-1+(n-1)=2n2-2;
又Θ(2n2-2)=n2
该程序的时间复杂度T(n)=O(n2).
一般情况下,对步进循环语句只需考虑循环体中语句的执行次数,忽略该语句中步长加1、终值判别、控制转移等成分,当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。
(3)、O(n)
a=0; b=1; ① for (i=1;i<=n;i++) ② { s=a+b; ③ b=a; ④ a=s; ⑤ } 12345678
解: 语句1的频度:2,
语句2的频度: n,
语句3的频度: n-1,
语句4的频度:n-1,
语句5的频度:n-1,
T(n)=2+n+3(n-1)=4n-1=O(n).
(4)、O(log2n)
i=1; ① hile (i<=n) i=i*2; ② 123
解: 语句1的频度是1,
设语句2的频度是f(n), 则:2^f(n)<=n;f(n)<=log2n
取最大值f(n)=log2n,
T(n)=O(log2n )
(5)、O(n3)
for(i=0;i<n;i++) { for(j=0;j<i;j++) { for(k=0;k<j;k++) x=x+2; } } 12345678
解:当i=m, j=k的时候,内层循环的次数为k当i=m时, j 可以取 0,1,…,m-1 , 所以这里最内循环共进行了0+1+…+m-1=(m-1)m/2次所以,i从0取到n, 则循环共进行了: 0+(1-1)*1/2+…+(n-1)n/2=n(n+1)(n-1)/6所以时间复杂度为O(n3).
网址:算法时间复杂性归纳 https://www.yuejiaxmz.com/news/view/431934
相关内容
数据结构之算法的时间与空间复杂度算法优化的艺术:降低时间复杂度与提升算法效率的实战技巧
时间复杂度和空间复杂度详解
时间复杂度
归纳法
反复收拾也还是乱?记住这5个收纳方法,回归整洁,拯救杂乱的家
复古家具回归,在现代空间中留下时间印记
揭秘最佳路线算法:如何轻松驾驭复杂交通,节省出行时间?
算法小技巧:空间换时间,时间换空间?
11个巧妙收纳技巧 让杂物完美归位