类似扑克牌思想,默认array[0]为第一张扑克牌,并且第一个循环从1开始,每次拿一张扑克牌和手里的牌做比较,然后插入响应的位置
算法步骤
- 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
- 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

public static int[] insetSort(int[] sourceArray){int[] arr = Arrays.copyOf(sourceArray,sourceArray.length);for(int i =1;i<arr.length;i++){int tmp = arr[i];int j = i;while (j>0&&tmp<arr[j-1]){arr[j] = arr[j-1];j--;}if (j!=i){arr[j] = tmp;}}return arr;}
或者是
private int[] insertionSort(int[] arrays) {for (int i = 1; i < arrays.length; i++) {int value = arrays[i];int j = i - 1;for (; j >= 0; --j) {if (value < arrays[j]) {arrays[j + 1] = arrays[j];} else {break;}}arrays[j + 1] = value;System.out.print("第" + i + "次交换");printAll(arrays);}return arrays;}
go 实现
// 插入排序func InsertionSort(a []int){for i:=1;i<len(a);i++{v := a[i]j :=i-1// 当前已经排好的队列for ;j>=0;j--{if a[j]>v {a[j+1]=a[j]// 移动数据}else {break}}a[j+1]= v}}
