时间复杂度:O(n^2)
是否稳定:稳定
方式一:
public static void insetSort(int[] arr){
if(arr == null || arr.length<2){
return ;
}
for(int i=1;i<arr.length;i++){//i从1开始,默认第一个已经排好序
insertToRightPosition(arr,i);
}
}
public static void insertToRightPosition(int[] arr,int i){
int inserted=arr[i];
int j=i-1;
for(;j>=0 && arr[j]>arr[i];j--){
arr[j+1]=arr[j];
}
arr[j+1]=inserted;
}
方式二:
public static void insertSort(int[] arr){
if(arr == null || arr.length<2){
return;
}
for(int i=1;i<arr.length;i++){
for(int j=i;j>0 && arr[j]<arr[j-1];j--){
swap(arr,j,j-1);
}
}
}
public static void swap(int[] arr,int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}