3:插入排序
3:插入排序
插入排序思想描述:
1、数组0到0位置,只有1个数,必定有序
2、数组0~1位置,盯着1位置的数,往左看:如果arr[1]>arr[0]停止。否则arr[0]与arr[1]交换,
再看arr[0]的左边有没有数,没数了停止。此时0~1位置上数有序。
3、数组0~2位置,盯着2位置的数,往左看:如果arr[2]>arr[1]停止。否则arr[2]与arr[1]交换,
再看arr[1]的左边有没有数,没数了停止;有数,比较arr[0]与arr[1],如果arr[1]>arr[0]停止。
否则arr[0]与arr[1]交换,再看arr[0]的左边有没有数,没数了停止。此时0~2位置上数有序。
...........................
4、直到0~N-1位
1 public static void insertionSort(int[] arr) {
2 if (arr == null || arr.length < 2) {
3 return;
4 }
5 // 不只1个数
6 for (int i = 1; i < arr.length; i++) { // 0 ~ i 做到有序
7 for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) { //注意这个j,每次都是i位置的左边一个数
8 swap(arr, j, j + 1);
9 }
10 }
11 }

浙公网安备 33010602011771号