插入排序原理:插入排序的数组分为左右两部分,左边有序小值部分,右边无序大值部分。从无序部分逐个与前面有序部分倒序比较,满足条件,插入到有序的指定位置。
复杂度:O(n) O(n^2) 稳定性:不稳定
核心代码:
@Test public void insertSort(){ for(int i=1;i<a.length;i++){ int insertVal = a[i]; // 记录插入值 int leftIndex = i-1; // 左边有序下标最大值 while(leftIndex>=0 && a[leftIndex]>insertVal){ //条件 a[leftIndex+1] = a[leftIndex]; //低位值平移给高位值 leftIndex--; } a[leftIndex+1] = insertVal; } System.out.println(Arrays.toString(a)); }