演算法基礎之排序 快速排序

2021-08-03 02:58:18 字數 667 閱讀 6688

上一節簡單介紹了一下常用的插入排序,這一節,我們來看看實際中針對大量資料最常用的快速排序演算法。

快速排序演算法採用的是一種分治的策略,其的特點就是。。。。快!演算法的平均時間複雜度為o(nlog(n)).

快速排序演算法處理公升序排序的思路大致如下:

1)選中待排序陣列中最左端的數為參考數;

2)從陣列的右端開始向左查詢,直到找到乙個比參考數小的數的位置,記為j ;

同時從陣列的左端向右查詢,直到找到乙個比參考數大的數的位置,記為i;

交換 i,j位置的數;

當滿足i

3)交換參考數和i位置的數;

對陣列中位於i 位置兩邊區間分別重複1),2)過程,直到待排序的子區間只剩下1個元素為止。

#includeusing namespace std;

void quicksort(int num,int left,int right){

if(left>=right) return;//待排序區間只有乙個元素 終止

int key,i,j;

i=left;//從左往右查詢變數

j=right;//從右往左查詢變數

key=num[left];//參考數

while(i=key && j>i) j--;//從右往左查詢

while(num[i]<=key && i

基礎排序演算法之快速排序

基礎思想 分治 選首元素作為key值,迴圈比較,比其小的元素放左側,比其大的放右側 分成的兩個數列,遞迴重複上述步驟 include includeusing namespace std 快速排序 時間複雜度 o n log n 從數列取乙個數作為key值 一般取第乙個數 i 從右邊遍歷找到第乙個比...

基礎演算法之快速排序演算法

快速排序基本思想是 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。比如序列 6,8,1,4,3,9 選取6為基準數key 不會變的 然後從右往左遍...

基礎排序演算法 快速排序

快速排序大家應該都知道,快速排序是一種不穩定的演算法,運氣差可以降速降到冒泡的速度,運氣好能快到比歸併還快的速度。首先,快速排序需要選擇乙個x,這個數很多人稱為基準。剛開始的時候選擇 a 0 當x,讓i l,j r 剛開始的時候l和r分別為最左邊和最右邊。1 讓j減小,直到遇到 i 或者找到乙個小於...