时间复杂度:用来评估算法的运行效率的一个公式。
其中的“1”、“n”是一个单位,表示几次
第一个例子:
print("hello world") ====> O(1)===>(运行一次)
#--------------------------------------------------
for i in range(n):
print("hello world") ====>O(n) ====>(运行n次)
#-------------------------------------------------
for i in range(n):
for j in range(n):
print("hello world") ===>O(n**2) ===>(运行n的平方)
#------------------------------------------------------
for i in range(n):
for j in range(n):
for k in range(n):
print("hello world")===>O(n**3) ====(运行n的三次方)
第二个例子:
print("hello world")
print("hello python")
======>O(1)
for i range(n):
print("hello world")
for j in range(n):
print("hello world")
=======>正常算的应该是O((1+n)n)/O(n**2+n),但是在时间复杂度中只是表示大约的存在,所以我们写成O(n**2)
第三个例子:
while n > 1:
print(n)
n = n//2
n = 64 输出:64、32、16、8、4、2;
?
2**6 = 64
log2 64 = 6
#时间复杂度记为:O(log2 n/logn)
#如果你的代码是循环迭代折半时,肯定用logn
该式时间复杂度表示为:O(log2 64)
时间复杂度小结:
一般来说,时间复杂度高的算法比复杂度低的算法慢;
常见复杂度(按效率排序):
O(1)<O(logn)<O(n)<O(nlogn)<O(n的平方) < O(n2 *logn)<O(n的三次方)
技巧:如何简单快速的判断出算法的复杂度(适用于绝大多数的简单情况)
确定问题规模n
循环减半的过程--> logn
k层关于n的循环 --->n^k
复杂的情况:根据算法的执行过程判断
原文:https://www.cnblogs.com/xbhog/p/11706044.html