#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...