快速排序的經典實現

2021-06-10 08:41:04 字數 568 閱讀 9907

快速排序是一種排序演算法,雖然最快情況執行時間為o(n*n),但快速排序通常是排序的最佳選擇,這是因為它的平均效能好,期望的執行時間為o(n*logn),而且這個漸進的常數因子很小。下面給出他的c++實現。在程式中是選取了最後乙個元素為主元,當然,在其他的版本中可以選取其他元素作為主元甚至隨機取數來作為主元以獲得更好的平衡性。

本程式的詳情請見 演算法導論第二版 機械工業出版社 第7章 快速排序

#include using namespace std;

#define max 100000

int a[max];

void exchange(int&x, int&y)

int partition(int a, int p, int r)

} exchange(a[i + 1], a[r]);

return i + 1;

}void quicksort(int a, int p, int r)

}int main()

; quicksort(a, 0, 8);

for(int i = 0; i < 9; i++)

{ cout<

快速排序的經典實現與分析

快速排序是實際應用中效率最高的排序演算法,它的期望時間複雜度是o nlgn 最壞情況時間複雜度是o n2 雖然最壞情況複雜度很高,但是平均期望時間複雜度為o nlgn 且常數項很小,通過隨機抽樣的改進後,排序的時間複雜度不會受輸入資料的影響。而且演算法的空間複雜度為o lgn 能夠進行原址排序。in...

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

快速排序是實踐中已知的最快的排序演算法,平均執行時間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...