-
插入排序
- 原理:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。
- 代码实例:

-
循环不变式
- 目的:主要是来帮忙我们理解算法的正确性;
-
证明:
- 循环的第一次迭代之前,它为真;
- 循环的某次迭代之前为真,那么下次迭代之前也为真;
- 循环终止时,也为真
- 结论:只要证明中的三点成立,那么就可以证明我们插入算法的正确性;
- 我们需要怎么做呢??
-
声明2个数组,一个原数组(未正确排序的数组),一个子数组(已经排序的数组);
- 第一点证明:第一次迭代之前,也就是i=1之前;因为第一次是不需要做比较的,因为第一次插入的时候子数组里面就一个数据,没有其他数据做比较,并且当前插入的数据和原来的数组一样,只是已经排好顺序了,所有成立。
- 第二点证明:for循环的逻辑就是在i=n并且while成立的时候;将左边的数向右边移动一个位置,n+1显然也成立。
- 第三点证明:循环最后得到的子数组和原来的数组里面的数字是一样,没有改变,只是顺序是排好的,那么结论成立。
- 综合上面3点可以根据循环不变式证明插入算法的正确性;
- 注:插入算法仅仅针对少量的数据效果比较好,如果是大量数据的排序,建议使用其他顺序算法。
相关文章:
-
2021-12-05
-
2022-01-05
-
2021-11-30
-
2021-11-10
-
2021-07-08
-
2022-02-19
-
2021-12-19
猜你喜欢
-
2021-05-08
-
2021-12-03
-
2021-08-22
-
2022-12-23
-
2022-12-23
-
2021-06-02
-
2021-09-19
相关资源
-
下载
2021-07-14
-
下载
2023-01-09
-
下载
2023-04-06