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) {
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 }
标签:arr,int,插入排序,位置,length,停止 来源: https://www.cnblogs.com/yzmarcus/p/16215590.html