标签:单位 nbsp range noi 增加 空间 选择 bin 运行时间
算法(Algorithm):一个计算过程,解决问题的方法。
输入→算法→输出
时间复杂度:用来评估算法运行效率的一个东西。
print(‘Hello World‘) #假如说这行代码运行时间是一个单位O(1)
for i in range(n): # 这段代码的时间是O(n),因为执行了n次 print(‘Hello World‘)
for i in range(n): # 这段代码是O(n*n),因为在执行了n*n次 for j in range(n): print(‘Hello World‘)
for i in range(n): #这代码是O(n*n*n),执行了n的立方次 for j in range(n): for k in range(n): print(‘Hello World‘)
小结:
时间复杂度是用来估计算法运行时间的一个式子(单位)。 一般来说,时间复杂度高的算法比复杂度低的算法慢。 常见的时间复杂度(按效率排序): O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3) 不常见的时间复杂度(看看就好) O(n!) O(2n) O(nn) …
空间复杂度:用来评估算法内存占用大小的一个式子
空间换时间:分给它一些空间或内存,让它运行速度更快
递归的两个特点:
1.调用自身
2.有结束条件
def func(x): if x>0: print(x) func(x-1) print(4) # 打印结果 4 3 2 1 #因为先打印再递归
def func(x): if x > 0: func(x-1) print(x) func(4) # 打印结果 1 2 3 4 # 因为先递归,再打印
打印 抱着抱着抱着抱着抱着我的小鲤鱼的我的我的我的我的我
def test(n): if n == 0: print("我的小鲤鱼", end=‘‘) else: print("抱着", end=‘‘) test(n-1) print("的我", end=‘‘) test(5) # 尾递归
汉诺塔问题
t = 0 def hanoi(n, A, B, C): global t if n > 0: hanoi(n-1, A, C, B) t += 1 print("%s -> %s" % (A, C)) hanoi(n-1, B, A, C) # hanoi(8,‘A‘,‘B‘,‘C‘) # 8表示8层 A B C 参数不能变 # print(t)
列表查找:从列表中查找指定元素
输入:列表、待查找元素
输出:元素下标或未查找到元素
顺序查找:从列表第一个元素开始,顺序进行搜索,直到找到为止。
二分查找:从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。
有序列表,列表的元素值随着索引值的增加而增加:
简单版二分查找
def bin_search(li, val): # li是传入的列表 val是要查找的值 low = 0 # low是起始的索引值 high = len(li) - 1 # high是末尾的索引值 while low <= high: # 满足起始索引小于末尾索引的条件就执行循环 mid = (low + high) // 2 # mid是列表的中间数的索引 if li[mid] == val: # 正好找到要查找的值的索引 return mid elif li[mid] < val: # 中间数的值小于被查找的值 low = mid + 1 # 说明val在中间数的右边 else: high = mid - 1 # 说明val在中间数的左边
递归版的二分查找 这是尾递归
def bin_search_rec(data_set, value, low, high): if low <= high: mid = (low + high) // 2 if data_set[mid] == value: return mid elif data_set[mid] > value: return bin_search_rec(data_set, value, low, mid - 1) else: return bin_search_rec(data_set, value, mid + 1, high) else: return
列表排序:将无序列表变成有序列表
输入:无序列表
输出:有序列表
顺序:升序与倒序
排序low B 三人组;
冒泡排序 其次最多
选择排序
插入排序
排序niu B 三人组:
快速排序 用得最多
堆排序 最难的
归并排序
标签:单位 nbsp range noi 增加 空间 选择 bin 运行时间
原文地址:https://www.cnblogs.com/aaronthon/p/9452303.html