排序之快速排序

2021-08-01 16:53:21 字數 2757 閱讀 1603

快速排序的在內排中起到比較重要的作用,平均時間複雜度達到o(nlogn)。

公升序快速排序

1

int partition(vector &vi,int start,int end)

11 vi[start]=key;

12return start;

13 }

14void quickcore(vector &vi,int start,int end)

20 }

2122

void quicksort(vector&vi)

指定排序順序快速排序

1

bool cmp(const

int &a,const

int &b)

4bool rcmp(const

int &a,const

int &b)

7int partition(vector &vi,int start,int end,bool (*cmp)(const

int&,const

int&))

17 vi[start]=key;

18return start;

19 }

20void quickcore(vector &vi,int start,int end,bool (*cmp)(const

int&,const

int&))

26 }

2728

void quicksort(vector&vi,bool (*cmp)(const

int&,const

int&))

指定任意物件和排序規則的快速排序

1

struct component;

5bool cmp(const component& obj1,const component& obj2)

14bool rcmp(const component& obj1,const component& obj2)

2324 template

25int partition(vector&vi,size_t start,size_t end,bool (*cmp)(const t&,const t&))

35 vi[start]=key;

36return start;

37 }

38 template

39void quickcore(vector&vi,size_t start,size_t end,bool (*cmp)(const t&,const t&))

45 }

46 template

47void quicksort(vector&vi,bool (*cmp)(const t&,const t&))

迭代器型別快速排序

1

struct component;

5bool cmp(const component& obj1,const component& obj2)

14bool rcmp(const component& obj1,const component& obj2)

23bool cmp1(const

int &a,const

int &b)

26bool rcmp1(const

int &a,const

int &b)

29 template

30 iterator partition(iterator start,iterator end,comparator cmp)

41 *(end-1)=key;

42return end-1;

43 }

44 template

45void quickcore(iterator start,iterator end,comparator cmp)

51 }

52 template

53void quicksort(iterator start,iterator end,comparator cmp)

56 template

57void quicksort(iterator start,iterator end)

測試

1 #include 2 #include3 #include4 #include

5using

namespace std;67

int main( )

8 ;10 quicksort(vi.begin(),vi.end());

11 sort(vi.begin(),vi.end(),cmp1);

12for(int i=0;i13 cout

";14 cout<15

16 vectorobj,

18 ,

19 ,

20 ,

21

22 };

23 quicksort(obj.begin(),obj.end(),cmp);

24for(int i=0;i25 cout

"<26 }

27return

0;28 }

排序之快速排序

有沒有既不浪費空間又可以快一點的排序演算法呢?那就是 快速排序 啦!光聽這個名字是不是就覺得很高階呢。假設我們現在對 6 1 2 7 9 3 4 5 10 8 這個10個數進行排序。首先在這個序列中隨便找乙個數作為基準數 不要被這個名詞嚇到了,就是乙個用來參照的數,待會你就知道它用來做啥的了 為了方...

排序之快速排序

該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數 o nlogn 出處 includeusing namespace std void quicksort int ...

排序之快速排序

快速排序原理 需要選取基準pivot值來進行陣列的低 高索引 low,high 對應陣列值進行來回比較,交換位置,相向而行。當high low時候,迴圈結束 最後通過遞迴對左右兩部分 左邊區域值低於pivot,右邊區域值高於pivot 分別遞迴操作,完成排序。不穩定排序,複雜度o nlogn 核心 ...