/**
* 插入排序 : 原地排序(时间复杂度O(1)) 稳定 时间复杂度为O(n*n)
*
*/
public class InsertSort {
public static void sort(int[] arr){
int length = arr.length;
for(int i = 1; i<length; i++){
int value = arr[i]; // 未排序组,位首
int j = i-1; // 排序组,位末
for(; j>=0; j--){ // 反向遍历排序组,找到合适位置将未排序组位首插入
if(arr[j]>value){
arr[j+1] = arr[j]; // 位置后移
}else {
break;
}
}
arr[j+1] = value; // 注意上面循环条件为 -1 时退出 所以是j+1
}
}
public static void main(String[] args) {
int[] arr = {9,8,7,6,5,4,3,2,1};
sort(arr);
for (int i : arr) {
System.out.print(i+" ");
}
}
}