算法——插入排序

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

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

看例子: spa

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趟來結合代碼說明:code

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));
    }
相關文章
相關標籤/搜索