經典排序演算法 最易懂的快速排序介紹

2021-10-21 08:29:56 字數 1262 閱讀 4588

#include

#pragma warning(disable:4996)

void

quicksort

(int

*arr,

int left,

int right)

//否則的話,如遞迴所有控制項路徑,函式將導致執行時堆疊溢位

int l = left;

int r = right;

int key = arr[left]

;//找第乙個數為基準數

//接下來將比基準數大的數字放在右邊,比基準數小的數字放在左邊

while

(l!=r)

//之後在左邊尋找比key大的數

while

(arr[l]

<=key&&l

//注意為 <=,同上。

//當lif

(l < r)

}//當l==r時,基準數與arr[l]進行交換

arr[left]

= arr[l]

; arr[l]

= key;

//進行函式遞迴

第一次迴圈結束之後,left和right指向同一位置,此時數列的順序:

之後進行函式的遞迴呼叫!

最終快速排序實現!

《經典排序演算法 快速排序》

快速排序是實踐中已知的最快的排序演算法,平均執行時間o nlogn 該演算法之所以快是因為非常精煉和高度優化的內部迴圈。它也是一種分治的遞迴演算法,將陣列s排序的基本演算法由下列簡單的四步組成 如果s中元素個數是0或1,則返回。取s中任一元素v,稱之為樞紐元。將s 分成兩個不相交的集合s1 x v ...

經典排序演算法 快速排序

使用分割槽演算法並找出主元 對主元兩邊的序列分別進行排序 整體時間複雜度 o nlog n public class quicksort 分割槽演算法 public static intpartition int a,int l,int r else if a l a mid a l a r els...

經典演算法 快速排序

題目說明 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序n 個專案要 n log n 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實...