快速排序是由東尼·霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 ο(nlogn) 次比較。在最壞狀況下則需要 ο(n2) 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 ο(nlogn) 演算法更快,因為它的內部迴圈(inner loop)可以在大部分的架構上很有效率地被實現出來。
快速排序使用分治法(divide and conquer)策略來把乙個序列(list)分為兩個子串行(sub-lists)。
快速排序又是一種分而治之思想在排序演算法上的典型應用。本質上來看,快速排序應該算是在氣泡排序基礎上的遞迴分治法。
從數列中挑出乙個元素,稱為 "基準"(pivot);
重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作;
遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序;
排序演算法4 快速排序
編寫乙份快速排序,完成對元素序列37,19,43,22,22,89,26,92按照從小到大順序排列。演算法思想 快速排序是氣泡排序演算法的改進,也屬於交換型別的排序演算法,它的基本思想描述如下 1 從第j個元素開始向前依次將每個元素與樞軸元素pivot比較。如果當前元素大於pivot,則比較前乙個元...
排序演算法 4 快速排序
快速排序法是對氣泡排序的一種改進,本來是要和氣泡排序寫在乙個文章裡的,不過前兩天剛開始在遞迴呼叫的時候沒有完全理解,昨天晚上google了一把發現原來自己理解錯了,我看的這個教材沒有寫清楚,今天早上除錯了一把終於成功。快速排序演算法的基本思想是 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部...
演算法 4 快速排序
從圖中我們可以看到 left指標,right指標,base參照數。其實思想是蠻簡單的,就是通過第一遍的遍歷 讓left和right指標重合 來找到陣列的切割點。第一步 首先我們從陣列的left位置取出該數 20 作為基準 base 參照物。第二步 從陣列的right位置向前找,一直找到比 base ...