1. 递归
- 两个特点:
- 调用自身
- 结束条件
- 汉诺塔问题
def hanoi(n, a, b, c):
if n > 0:
hanoi(n-1, a, c, b):
print("Moving from %s to %s" %(a, c))
hanoi(n-1, b, a, c)
hanoi(3, 'A', 'B', 'C')
2. 查找
- 顺序查找
- python中list的内置查找函数 .index()
- 时间复杂度O(n)
- 二分查找
- 需先排序
- 时间复杂度O(logn)
- 分析思路:
- 确定两个部分的边界
- 分析mid不同条件下,边界存在的区间
- 调整left, right
- 注意:边界是否要=,避免死循环,left, right的最后位置
3. 排序
- list内置函数 .sort()
- python内置函数 a = sorted(list)
- 常见的排序方法
4. 冒泡排序
- 时间复杂的O(n^2)
- n-1趟:每趟n-1-i次对比
5. 选择排序
- n-1趟:每趟记录最小的放在有序区的后边。
- 时间复杂度O(n^2)
6. 插入排序
- 每次拿一个数,与前边有序区对比,大数后移,当前数插入合适位置。
- 时间复杂度O(n^2)
7. 快速排序
- 时间复杂度O(nlogn)
- 问题:
- 最坏情况O(n^2)
- 递归(占内存)