排序算法之插入排序

  初識算法,甚是腦大!初識排序,甚是苦惱!不過真要鐵 了心,好好的看下去,想一想這些排序並無那麼困難!算法

  經過網上的學習和本身的理解,想對插入排序算法作一些總結,以加深對算法的理解。數組

  直接插入排序(Insertion Sort)的思想是:學習

        每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子文件中的適當位置,直到所有記錄插入完成爲止。spa

  基本思想:假設有數組a[] 有n個元素,隨機抽取第一個 a[1] 做爲有序區的元素,則把 [2 --- n-1] 的元素,依次插入到 有序區,code

       最後生成含n個記錄的有序區。blog

  代碼解析:排序

    

/* 時間複雜度最慢:O(n*n);若是都是正序的話,時間複雜度:O(n);
     * 思想:n個元素,抽一個 做爲有序區,剩下的元素要插入n-1 次,沒一次插入 須要 從右向左依次比較。
    */
    public static void insetSort(int a[]){
        int j ;
        int temp;
        for(int i=1;i<a.length;i++){  //抽出一個元素後,餘下須要 插入比較 n-1次,
             j = i; 
             temp = a[i];               //建立一個 臨時變量,用於存放將要插入的 元素。 
             while(j > 0 && temp <a[j-1]){   // 當j = 0 時,一次 插入結束
                                         
                a[j] = a[j-1];
                j--;
                
             }
             a[j] = temp;             //將 temp放到 排序好的左邊位置上,
        }
    }
相關文章
相關標籤/搜索