問題:對「6 1 2 7 9 3 4 5 10 8」十個數進行排序
首先選乙個基準數,為了方便,我們就選第乙個數6作為準基數吧。
我們想把準基數6放到它準確的位置,就是排序好後的位置
我們想把比6小的都放在6的左邊,比6大的都放在6的右邊,那麼6的位置就排序好了
我們假設序列兩端都有乙個箭頭,乙個從左端開始找第乙個比6大的,乙個從右端開始找第乙個比6小的,然後交換兩者的位置。
此時整個序列可分為兩段,比6小的和比6大的,分別對兩段進行同樣的操作,即分別重新選取基準數,再重複上面排序的過程如此類推,直到所有的元素都排序好位置。
#include #include using namespace std;
int a[101],n;//定義全域性變數,這兩個變數需要在子函式中使用
void quicksort(int left,int right)
temp = a[left]; //temp中存的就是基準數
i=left;
j=right;
while(i!=j)
quicksort(1,n);//快速排序呼叫
for(int i=1;i<=n;i++)
getchar();
getchar();
return 0;
}
排序(三) 快速排序 選取不同位置基準數
1 i l j r 將基準數挖出形成第乙個坑a i 2 j 由後向前找比它小的數,找到後挖出此數填前乙個坑a i 中。3 i 由前向後找比它大的數,找到後也挖出此數填到前乙個坑a j 中。4 再重複執行2,3二步,直到i j,將基準數填入a i 中。include include using nam...
快速排序 基準定位,分而治之
快速排序的思想 快速是這個演算法的特點,所以為了效率出現頻度也會很高。快速排序 基準元素 二分思想,分治的標準是相比於基準元素值的大小 比如相比於基準元素大的放右邊,小的放左邊 分治思想的執行提高了執行效率。快速排序 public class quicksort 實現排序的方法 quicksort ...
資料結構 排序 快速排序之隨機選取基準法
思想 基本的快速排序選取第乙個或者最後乙個元素作為基準。這樣在陣列已經有序的情況下,每次劃分將得到最壞的結果。一種比較常見的優化方法是隨機化演算法,即隨機選取乙個元素作為基準。這種情況下雖然最壞情況仍然是o n2 但最壞情況不再依賴於輸入資料,而是由於隨機函式取值不佳。實際上,隨機化快速排序得到理論...