基準數 快速排序

2021-08-28 13:24:43 字數 691 閱讀 5936

問題:對「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 但最壞情況不再依賴於輸入資料,而是由於隨機函式取值不佳。實際上,隨機化快速排序得到理論...