1.直接插入排序
基本思想
在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
图像示例

算法实现
一种是从后往前插入,也是java.util.Array的实现方式
private static int[] insertSort(int[] array, int low, int high) { //从后往前插入,Array里面实现
for(int i=low+1;i<=high;i++) { //比较值 无=最后一个值不参与比较 low+1可以为low(Array实现)
for (int j=i;j>low&&(array[j-1]>array[j]);j--){ //从后开始插入,每次最后的几个元素是有序的
swap(array,j,j-1);
}
}
return array;
}
一种是从前往后插入
private static int[] insertSort2(int[] array, int low, int high) {//从前往后插入
for(int i=low+1;i<=high;i++) { //第一个值不用比较,不影响 ,要=high
int insertElem=array[i];
// int

直接插入排序是一种简单的排序算法,其基本思想是通过逐步把未排序元素插入到已排序部分来构建有序序列。时间复杂度为O(n^2),空间复杂度为O(1)。文中介绍了从后往前插入和从前往后插入两种实现方式,并讨论了如何通过折半插入和2路插入进行优化,以减少比较和移动次数。
最低0.47元/天 解锁文章
1164

被折叠的 条评论
为什么被折叠?



