排序(三) 快速排序 Quick sort

2021-10-07 14:35:29 字數 1192 閱讀 7979

快速排序。顧名思義,該排序演算法的特點就是快。相較於冒泡與選擇排序,快速排序的時間複雜度小很多(特別是在資料量大的情況下)為o(nlogn),所以其優勢很明顯。個人感覺在一般的題目或oj中,快速排序是非常實用的工具。(c++的sort函式嘛。。。能偷懶就偷懶唄)

當然,具體情況具體對待。排序的方法有很多,不愁沒方法做。

書歸正傳。快速排序的思路與選擇排序些許相似。快速排序要先指定乙個關鍵字(通常是區間的第乙個元素),分別從起點和終點相向而行,並與關鍵字比較。以公升序為例,我們總希望後面的數比前面的數大,所以當後面的數小於前面的數時,就需與此時相向而行的元素位置對換。之後將中值確定

這個中值可將區間分為左右兩部分,從而實現左右分別遞迴,完成排序。

下面來看演算法

using

namespace std;

void

quick_sort

(int a,

int low,

int high)

}//此時i=j

a[low]

=a[i]

;//調整左側基數,確定中值

a[i]

=key;

quick_sort (a,low,i-1)

;// 分為左右兩部分遞迴

quick_sort (a,i+

1,high)

;}

實際上,上述**可分為兩個部分,以遞迴為分界線,線上的時確定中值的位置,線下的時分別遞迴。這裡我寫成了乙個整體。

int

main()

;quick_sort

(a,0,9

);

cout<<

"排序後"

<

for(

int i=

0; i<

10; i++

) cout<

<<

" ";

}

執行結果如下

python實現快速排序 quick sort

快速排序 quick sort 又稱劃分交換排序 partition exchange sort 通過一輪取乙個元素作為中間值,將要排序的資料分割成兩部分,其中一部分的所有資料都比這個中間值都要小,另外一部分的所有資料都比這個中間值要大,然後再次按此方法依次對這兩部分資料分別再次進行快速排序,注意在...

基本排序演算法之3 快速排序quicksort

快排的思路就不說了,中軸分組,借助乙個臨時單元。時間複雜度o nlogn 下面是實現 includeusing namespace std templatebool less t a,t b a first temp qsort a,first,f qsort a last 1,n last 1,f...

第七章快速排序之「快速排序QUICKSORT」

include using namespace std int partition int a,int lo,int hi while a j key if i j else return j void quicksort int a,int lo,int hi int j partition a,...