算法相关---->准备知识
递归的复习
def func1(x): if x > 0: func1(x - 1) print(x) func1(5) #结果 以此打印1 2 3 4 5 def func2(x): if x > 0: print(x) func2(x - 1) func2(5) #结果 以此打印5 4 3 2 1
两个特点:
1.调用自身
2.结束条件
两个重要单位:
时间复杂度:
算法的时间复杂度是一个函数,它定量描述了该算法的运行时间,时间复杂度常用“O”表述,使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况;
用来估算算法运行时间的一个式子(单位)
一般来说,时间复杂度高的算法比复杂度低的算法慢
常见的时间复杂度高低排序:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)
print('Hello world') # O(1) # O(1) print('Hello World') print('Hello Python') print('Hello Algorithm') for i in range(n): # O(n) print('Hello world') for i in range(n): # O(n^2) for j in range(n): print('Hello world') for i in range(n): # O(n^2) print('Hello World') for j in range(n): print('Hello World') for i in range(n): # O(n^2) for j in range(i): print('Hello World') for i in range(n): for j in range(n): for k in range(n): print('Hello World') # O(n^3)
空间复杂度:
用来评估算法内存占用大小的一个式子
“空间换时间”