天天看點

java實作插入排序_java排序算法實作之插入排序

所謂插入排序就是指将數組分成左右兩個小數組 a, b ,

數組a元素個數從一個開始遞增,直至arr.lenth完成整個數組的排序,通常數組a的第一個元素是arr[0],範圍逐漸向右拓展;

數組b元素個數從arr.len開始遞減,通常b數組第一個元素逐漸替換為arr[1], arr[2], arr[3].....arr[arr.lenth-1],範圍逐漸向右縮小;

java實作插入排序_java排序算法實作之插入排序

排序過程如下:

拿到b數組的一個元素(從第一個開始),記為key值(key=arr[i]),

然後将key值與數組a的元素(arr[j])自右而左進行比較:

如果arr[j]>key, 則将arr[j]元素往後移動;

如果arr[j]

重複以上步驟,直至完成b數組的所有元素的周遊。

最終,完成周遊b數組的所有元素并進行元素位置相應調整,完成整個數組的升序排列。

插入排序函數代碼如下:

java實作插入排序_java排序算法實作之插入排序

// 插入排序

public static void sort(int[] arr) {

for(int i=1;i

int key = arr[i];

int j=i-1;

for(;j>-1;j--) {

if(arr[j]>key) {

arr[j+1] = arr[j];

}

else {

//       arr[j+1] = key;

break;

}

} // for

arr[j+1] = key;

} // for

}

java實作插入排序_java排序算法實作之插入排序