時(shí)間復(fù)雜度:O(n2)
1. 算法思想
數(shù)組第一個(gè)數(shù)arr[0]視為有序,將第二個(gè)數(shù)arr[1]插入烁落。插入完成后再將前兩個(gè)數(shù)視為有序塌衰,
將第三個(gè)數(shù)插入膨更。如此循環(huán)直至插入所有數(shù)妙真。
2. 插入的過(guò)程
一次插入中,將arr[n+1]插入前面排好序的arr[0]~arr[n]中荚守。若arr[n+1]<arr[n],則二者交換位置(可視為arr[n+1]插入到arr[n]前面珍德,如{1,3,4,2}變?yōu)閧1,3,2,4})练般,然后再將交換后的a【n】(也就是例子中的2)與a[n-1]比較,如此循環(huán)直至該數(shù)不再有比它大的數(shù)在前面或者該數(shù)已經(jīng)到a[0]位置時(shí)結(jié)束一次插入過(guò)程锈候。
3. java算法實(shí)現(xiàn)
public static void charu(int[] arr) {
if(arr == null || arr.length<2) {
return;
}
else {
//數(shù)組第一個(gè)數(shù)arr[0]視為有序薄料,從第二個(gè)數(shù)arr[1]開始插入
for(int i = 1 ; i < arr.length ; i++) {
for(int j = i - 1 ; j >= 0 && arr[j] > arr[j + 1] ; j--) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}