1、介绍
插入排序属于内部排序法。是对于待排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。
2、实现思路
把n个待排序的元素看成为一个有序表和一个无序表,开始有序表只有一个元素,无序表中有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码(下标)依次与有序表元素的排序码(下标)进行比较,将它插入到有序表中适当位置
3、代码实现
public static void main(String[] args) {
int[] arr = {5, 4, 3, 2, 1};
insertSort(arr);
}
public static void insertSort(int[] arr) {
// 控制循环次数和第一个元素
for (int i = 1;i < arr.length;i++) {
// 待插入的数据
int insertValue = arr[i];
// 要插入元素的下标
int insertIndex = i - 1;
// index >= 0 是为了防止下标越界
// nextValue < arr[index] 如果下一个元素的值小于当前下标的数据
while (insertIndex >= 0 && insertValue < arr[insertIndex]) {
// 当前元素插入到下一个索引上
arr[insertIndex + 1] = arr[index];
// 继续判断当前索引的上一个数据
insertIndex--;
}
// 因为上面while循环中"index--"了,所以这里当前元素就必须要加一
if (insertIndex+1 != i) {
arr[insertIndex + 1] = nextValue;
}
}
}
仅供参考