快速排序C 實現

2021-10-03 23:28:02 字數 874 閱讀 8996

#include

using

namespace std;

intpartition

(vector<

int>

& v,

int low,

int high)

v[low]

= pivot;

//是樞軸落在最終位置

return low;

//劃分演算法,左右指標共同掃瞄整個鍊錶一次,時間複雜度o(n)

}void

quicksort

(vector<

int>

& v,

int low,

int high)

}int

main

(int argc,

char

const

*ar**)

quicksort

(v,0

, v.

size()

-1);

for(

int i =

0; i < v.

size()

; i++

)printf

("%d "

, v[i]);

return0;

}

快速排序屬於交換排序的一種,基於分治法,在表中取乙個元素樞軸(這裡取第乙個),將表中小於樞軸的元素移動到樞軸右邊,大於樞軸的元素移到左邊,這樣進行一次劃分後樞軸就落到它排序後應該存放的最終位置,在分別遞迴地劃分左邊的部分和右邊的部分,直到每個劃分部分的長度為1,這樣就完成了快速排序。一般情況下時間複雜度為o(nlogn)。

以0為輸入結束標誌

本演算法借鑑王道考研資料結構快速排序的偽**

排序 快速排序,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...