软院大二上的算法课真是离谱,课上PPT几乎全是英文(怀疑完全是从算法导论原版书粘贴的),也听不懂。上机考试和上课讲的内容也没有关系,被纯纯虐杀,有的算法听都没听过...
第二章 算法基础
2.1 插入排序
基本算法:
当选择循环下标j时,数组的A[1, j-1]已经排好序,剩余子数组为A[j+1, n],将j下标的元素插入到前j-1个元素之中的合适位置:查找对应位置需要从j-1到1一个一个找到第一个小于等于A[j]的元素,找过的元素都往后移一位,A[j]放在停止的位置上。而循环下一次下标为j+1。
而当证明算法的正确性时,书中给出了需要证明的三条性质:
- 初始化: 循环的第一次迭代之前,它为真;
- 保持: 如果循环的某次迭代之前它为真,那么下次迭代之前它仍然为真;
- 终止: 在循环终止时,不变是为我们提供了一个有用的性质,该性质有助于证明算法是正确的。