1. 程式人生 > >算法——插入排序

算法——插入排序

amp ima int 當前 技術分享 println arr 說明 pan

插入排序是最簡單的排序算法之一,保證從位置0到p上的元素為已排序狀態。

技術分享圖片

上圖的p=1是指數據的下標,移動的位置是從位置p往左邊移動

看例子:

public void insetSort(){
        int[] a = {34,8,64,51,32,21};
        System.out.println(Arrays.toString(a));
        int j;
        for (int p = 1; p < a.length ; p++) {
            int tmp = a[p];//記錄p位置上的值
            for
(j = p; j > 0 && tmp < a[j-1] ; j --) {//循環並比較大於p位置上的值,然後與之調換位置 a[j] = a[j-1]; } a[j] = tmp; } System.out.println(Arrays.toString(a)); }

以p=4趟來結合代碼說明:

public void insetSort(){
        int[] a = {8,34,51,64,32,21};//p=4趟之前的數據順序
        System.out.println(Arrays.toString(a));
        
int j; for (int p = 1; p < a.length ; p++) { int tmp = a[p];//從這裏開始說明,這列的tmp等於32, //拿32與前面排序好的數組進行比較, //第一次比較與交換後的數組是:8,34,51,64,64,21 //第二次比較與交換後的數組是:8,34,51,51,64,21 //第三次比較與交換後的數組是:8,34,34,51,64,21 //第四次發現小於當前下標元素(這裏的下標元素是第一個34)了就直接退出循環,然後把p值賦值給當前下標的元素,得出的數組是:8,32,34,51,64,21
// for (j = p; j > 0 && tmp < a[j-1] ; j --) { a[j] = a[j-1]; } a[j] = tmp; } System.out.println(Arrays.toString(a)); }

算法——插入排序