c 實現快速排序

2021-10-08 21:25:38 字數 796 閱讀 8082

快速排序是目前已知排序速度最快的排序演算法,平均時間複雜度o(n

logn

)o(nlogn)

o(nlog

n)。快速排序的思想很樸素,但是實現起來卻很困難,一度被認為是一種理論上極值優化卻無法實現的演算法,原因在於有太多的細節需要把控。網上的快排**許多是有錯誤的,或者可讀性不高,這裡把自己的**分享出來,希望可以幫助到大家。**已經通過leetcode912題的測試。用的時候直接呼叫我的quicksort函式即可。

vector<

int>

sortarray

(vector<

int>

& nums)

前面也說過了,快速排序的思想很樸素,在排序時,首先選取乙個主元(一般取序列第乙個元素,也有隨機取的演算法)。然後把未排序序列分為兩部分,將小於主元的元素放置在一邊,大於主元的元素放置在一邊。以序列為例,選取6為主元,將序列分為兩部分,,接下來對這兩部分再進行同樣的操作即可。不難發現快速排序使用了分治的思想。

void

quicksort

(vector<

int>

&nums,

int left,

int right)

swap

(nums[left]

,nums[j]);

quicksort

(nums,left,j-1)

;quicksort

(nums,j+

1,right)

;}

排序 快速排序,C 實現

本文 的github位址 基本思想 快速排序 是對 氣泡排序 的改進。基本原理 基於分治法,在待排線性表中取乙個元素pivot作為樞軸值,通過一趟排序將待排線性表劃分為獨立的兩部分,第一部分的所有元素小於pivot,第二部分的所有元素大於等於pivot,pivot位於其最終位置。遞迴對兩個子表做快速...

快速排序 c 實現

快速排序思想 基於分治策略,對氣泡排序的一種改進。對於要排序的乙個序列,從中選一值進行排序,將其放入到正確的位置position。然後以position為界,對左右兩部分再做排序。直到劃分的長度為1。步驟 設有一待排序的序列 1.分別設定low hight指向序列的最左端 最右端 從序列中選乙個進行...

快速排序(C 實現)

include using namespace std void swap int a,int b int sort int begin,int end if beginwhile beginif begin return begin void quicksort int begin,int end...