import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int[] arr = {4, 34, 19, 1, 9 ,-1};
System.out.println("排序前为:" + Arrays.toString(arr));
insertSort(arr);
System.out.println("排序后为:" + Arrays.toString(arr));
}
public static void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
// 记录将要插入的位置
int insertIndex = i - 1;
// 记录将要插入的数
int insertValue = arr[i];
// 和插入到的位置上的数作比较,不越界且将要插入的数大
while (insertIndex >= 0 && arr[insertIndex] > insertValue) {
// 将arr[insertIndex]后移
arr[insertIndex + 1] = arr[insertIndex];
// 插入的位置前移,判断与前面数之间的大小
insertIndex--;
}
// 结束while循环的条件是:insertIndex--之后,insertIndex小于0。
// 1.进入while循环之后,将要插入的数插入到了最前面;2.不进入while循环,位置保持不变
if (insertIndex != i - 1) {
arr[insertIndex + 1] = insertValue;
}
}
}
}