快速排序的在內排中起到比較重要的作用,平均時間複雜度達到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 #include5using
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 核心 ...