算法课
插入排序
伪代码
for j = 2 in n
do key = A[j]
i = j - 1
while i > 0 and A[i] > key
do A[i+1] = A[i]
i = i - 1
A[i+1] = key
ipad上有示意图帮助理解
运行时间
- 输入是否有序
- input size
- upper bound
分析的类型
- Worst case(usually)
T(n) = max time - Average case
T(n) = expected time(一般这种情况需要输入的分布) - Best case
bogus,这种情况几乎不存在,教授戏称假象
使用渐进分析判断最糟糕的情况
渐进分析
- 忽略机器因素
- 关注增长
-符号
弃去低阶项,忽略常数因子。(有时候比
好,在n相当小的情况下,可看ipad上示意图)
插入排序分析
逆序时情况最糟
归并排序
T(n) | Mergesort A[1...n] |
---|---|
1.If n=1, done | |
2 |
2.Recursively solve A[1, [n/2]] and A[[n/2]+1, n] |
3.Merge two sorted lists |
T(n)可以用递归树方法或主方法解出来。
将在2019_4_1中提到