快速排序.md

基本算法思想

快速排序是一種分治算法,同‘歸併排序’思想相同,呈互補。將數組切分(partition)爲兩部分,對獨立兩部分進行排序。歸併排序是對數組等分切割後,將有序子序列歸併得到有序數組;快速排序是安裝數組的內容決定切分位置後,兩個子數組有序後整個數組也有序。

特點

  • 原地排序(僅需要很小的輔助棧)
  • 長度爲 N的數組排序時間和 NlgN成正比
  • 內循環比大多數排序要短

快速實現算法

public class quick{
    pulic static void sort(Comparable[] a){
        StdRandom.shuffle(a);        //消除對輸入依賴   
        sort(a, 0, a.length-1); 
     }
    private static void sort(Comparable[] a, int lo, int hi){
         if(hi <= lo) return;
         int j = partition(a, lo, hi);
        sort(a, lo, j-1);        //左側排序
        sort(a, j, hi);            //右側排序
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章