1、插入排序介绍
插入排序属于内部排序法,一般也被称为直接插入排序,对于少量元素排序来说是一个有效的算法。它是对要排序的元素以插入的方式找到元素的适当位置,达到排序的目的
2、插入排序思想:
把n个要排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含 n - 1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使它成为新的有序表
在待排序的元素中,假设前面 n - 1(其中 n >= 2)个数是排好序的
3、插入排序代码实现
public static void insertSort(int[] arr) {
for(int i = 1; i < arr.length; i++) {
// 临时变量,用来存储要要插入的值
int insertValue = arr[i];
// 要插入值前一个位置的下标
int insertIndex = i - 1;
// 判断下标未越界还在找要插入位置,并且要插入的值是否小于 arr[insertIndex] 的值
while (insertIndex >= 0 && insertValue < arr[insertIndex]) {
// 将要插入位置的值赋值给后一个
arr[insertIndex + 1] = arr[insertIndex];
// 继续向前找,前面的是已经排序好的数据,直到找到合适位置或者 index 小于 0
insertIndex --;
}
// 已经找到合适位置后将要插入的值 insertValue 赋值给 arr[insertIndex + 1]
arr[insertIndex + 1] = insertValue;
}
System.out.println(Arrays.toString(arr));
}