快速排序。顧名思義,該排序演算法的特點就是快。相較於冒泡與選擇排序,快速排序的時間複雜度小很多(特別是在資料量大的情況下)為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,...