#include
#include
using
namespace std;
/* #與歸併排序一樣,快速排序也使用了分治思想。
#快速排序分三步分治:
分解、解決、合併
*/void
quicksort
(int
*a,int left,
int right)
;int
partition
(int
*a,int left,
int right)
;void
swapvalue
(int
&a,int
&b);
intrandomized_partition
(int
*a,int left,
int right)
;int
main()
;/*int a[16] = ;*/
quicksort
(a,0,7
);for(
int j =
0;j <
8;j++
)return0;
}void
quicksort
(int
*a,int left,
int right)
}//vs中處理遞迴是按照**順序處理的,左邊先遞迴完再去處理右邊。
void
swapvalue
(int
&a,int
&b)//partition過程中我們將陣列最右邊的元素作為軸值
intpartition
(int
*a,int left,
int right)
}swapvalue
(a[i +1]
, a[right]);
return i +1;
}//隨機化版本的快速排序演算法:在陣列/子陣列中隨找乙個值作為軸值
//意義在於:快速排序的期望執行時間是θ(nlgn)
intrandomized_partition
(int
*a,int left,
int right)
時間代價分析:
最壞情況:θ(n²)
最好情況:θ(nlgn)
排序 快速排序,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...