一直都在csdn看別人寫的文章,動手寫寫以後還能找出來看看。小白,有段時間沒寫**,手有點生疏。若有什麼錯誤,請多多指教。
最近在看《演算法導論》,看到快速排序,決定寫一寫。
這是最壞情況下的**,每次都選最後乙個元素作為主元。
#include
using
namespace std;
void
exchange
(int
*a,int i,
int j)
intpartition
(int
*a,int p,
int r)
}exchange
(a,i+
1,r)
;//主元放到"小於和大於的中間"
return i+1;
//返回主元的下標
}void
quicksort
(int
*a,int p,
int r)
}int
main()
;int n=
sizeof
(a)/
sizeof
(int);
quicksort
(a,0
,n);
//呼叫快速排序
排序 快速排序,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...