原理:取出当前元素存起来,然后向前遍历,寻找插入位置,把前面大的数字往后挪,直到前面的数都比它小,插入。
时间复杂度:最好:正序O(N)最差:O(N^2) 平均:O(N^2)
代码:
public class InsertSort {
public static void main(String[] args){
int[] arr = new int[]{10, 8, 2, 9, 7, 27, 18, 22, 8, 13};
System.out.println("排序前:"+ Arrays.toString(arr));
InsertSort(arr);
System.out.println("排序后:"+Arrays.toString(arr));
}
public static void InsertSort(int[] arr){
int insertIndex=0;
int insertVal=0;
for(int i=1;i<arr.length;i++){
insertIndex=i-1;
insertVal=arr[i];
while (insertIndex >= 0 && insertVal < arr[insertIndex]) {
arr[insertIndex + 1] = arr[insertIndex];
insertIndex--;
}
if(insertIndex + 1 != i) {
arr[insertIndex + 1] = insertVal;
}
}
}
}