You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1.7 KiB

算法运行效率与时间复杂度

  • 时间复杂度

使用表示算法运行的快慢 和 循环次数

1、时间复杂度=o(1)

print('Hello World!')

2、时间复杂度=o(n)

for(int i = 0; i < n; i++){
    print('Hello World!')
}

3、时间复杂度=o(n*m)

for(int i = 0; i < n; i++){
    for(int j = 0; j < m; j++){
    	print('Hello World!')
	}
}

注意区分

理解:问题规模

4、时间复杂度=o(1)

print('Hello World!')
print('Hello Java!')
print('Hello Zhang!')

5、时间复杂度=o(n2)

for(int i = 0; i < n; i++){
	print('Hello Java!')
    for(int j = 0; j < m; j++){
    	print('Hello World!')
	}
}

5、时间复杂度=o(log2 n) 或者 o(log n)

while(n>1){
    print('Hello World!')
    n = n / 2
}

当n=64, 则输出为64、32、16、8、4、2

由于26=64,则log64=6。

以此类推:n = n / 3 为 o(log3 n)

以此类推:n = n / 4 为 o(log4 n)

总结:只要问题规模出现循环减半情况,则使用对数描述时间复杂度;

​ 只要问题规模出现多层循环情况,则使用次幂描述时间复杂的。


  • 小结

时间复杂度是用来描述估计算法运行时间的一个式子(单位)。

一般来说,时间复杂度高的算法比复杂度低的算法慢。

常见的时间复杂度排序(按效率排序 【主要:o(1) < o(log n) < o(n) 】)

​ o(1) < o(log n) < o(n) < o(n * log n) < o(n2) < o(n2 * log n) < o(n3)