排序(三) 快速排序 選取不同位置基準數

2021-10-05 22:52:00 字數 935 閱讀 6455

//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

namespace std;

void

insert_sort

(int a,

int n)

}void

qsort1

(int a,

int left,

int right)

a[i]

= x;

qsort1

(a, left, i -1)

;qsort1

(a, i +

1, right);}

}int

getcenter

(int a,

int left,

int right)

//三個數取中位數快排

void

qsort2

(int a,

int left,

int right)

swap

(a[i]

, a[right -1]

);qsort2

(a, left, i -1)

;qsort2

(a, i +

1, right);}

else

// 否則用插入排序

insert_sort

(a + left, right - left +1)

;}intmain()

}

資料結構 排序 快速排序之隨機選取基準法

思想 基本的快速排序選取第乙個或者最後乙個元素作為基準。這樣在陣列已經有序的情況下,每次劃分將得到最壞的結果。一種比較常見的優化方法是隨機化演算法,即隨機選取乙個元素作為基準。這種情況下雖然最壞情況仍然是o n2 但最壞情況不再依賴於輸入資料,而是由於隨機函式取值不佳。實際上,隨機化快速排序得到理論...

基準數 快速排序

問題 對 6 1 2 7 9 3 4 5 10 8 十個數進行排序 首先選乙個基準數,為了方便,我們就選第乙個數6作為準基數吧。我們想把準基數6放到它準確的位置,就是排序好後的位置 我們想把比6小的都放在6的左邊,比6大的都放在6的右邊,那麼6的位置就排序好了 我們假設序列兩端都有乙個箭頭,乙個從左...

快速排序 基準定位,分而治之

快速排序的思想 快速是這個演算法的特點,所以為了效率出現頻度也會很高。快速排序 基準元素 二分思想,分治的標準是相比於基準元素值的大小 比如相比於基準元素大的放右邊,小的放左邊 分治思想的執行提高了執行效率。快速排序 public class quicksort 實現排序的方法 quicksort ...