插入排序(InsertSort)

算法思路:

假定這個數組的序是排好的,然後從頭往後,如果有數比當前外層元素的值大,則將這個數的位置往後挪,直到當前外層元素的值大於或等於它前面的位置爲止.這具算法在排完前k個數之後,可以保證a[1…k]是局部有序的,保證了插入過程的正確性


public class InsertSort {
    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] a = new int[] {5, 2, 4, 6, 1, 3};
          
        for(int i = 1; i < a.length; i ++) { //外層元素從第二個開始
            int key = a[i];
              
            int j = i - 1;
              
            while(j >= 0 && a[j] > key) {
                a[j + 1] = a[j]; //已經排好序的子序列元素後移
                j --;
            }
            a[j + 1] = key;
        }
          
        for(int i = 0; i<a.length; i++) {
            System.out.print(a[i]);
            System.out.print(" ");
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章