1. 程式人生 > >快速排序及其優化

快速排序及其優化

快速排序及其優化

 

快速排序:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列

時間複雜度:平均情況O(nlogn) 最好情況O(nlogn) 最壞情況O(n^2)

空間複雜度:O(logn)

不穩定

 

 

 

 

 

程式碼:

 

 

 

 

 

 

優化1的直接插入函式InsertSort程式碼:

 

 

 

優化2的三數取中法GetMiddleNumber函式程式碼:

 

 

 

優化3:防止最壞情況,加入隨機函式,隨機取基準值

 

 

 

優化4:重複資料的處理,每次將與基準值相同的值放在基準值的周圍,不參與遞迴分組

 

 

 

優化5:非遞迴優化,利用棧的應用,重複進行壓棧Push操作 和 出棧Pop操作

        最終將全部資料全部排序完成