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