快速排序之隨機化

2021-06-26 15:28:03 字數 695 閱讀 9533

快速排序的思想就是選擇乙個基準數,讓每個數與它比較,找到它在所有這些數排好序後應該在的位置。

而快速排序對大體應經排好序的數執行效率是n^2,所以對基準數隨機化,以下**

#include #include using namespace std;

//產生m到n的隨機數

int random(int m, int n)

else if(m > n)

else

}void randomizedpartition(int *a,int left, int right)

//該快速排序由於是預設以陣列第乙個數作為基準數,存在很大偶然性

//最好情況nlogn,最壞情況n^2

void quicksort(int *p,int left,int right)

if(i < j)

while(i < j && p[i] < cut) //從左往右,做比較

if(i < j)

}p[i] = cut; //i就是cur這個基準數的確切位置

quicksort(p,left,i-1);

quicksort(p,i+1,right); }}

int main()

; quicksort(a,0,10-1);

for(int i = 0; i<10; i++)

cout<

隨機化快速排序

define max size 100 include include using namespace std 交換指標p1,p2指向的值 void exchange int p1,int p2 pa為指向a的陣列,p,r為下標,對a p.r 進行就地重排,以a r 為主元 劃分為小於主元和大於主元...

隨機化的快速排序

快排是所有排序演算法中平均效能最好的一種排序,雖然它的最壞的情況和氣泡排序一樣是 n 2。但是平均來說為o n logn 現在研究生又開始學演算法了,主要是隨機演算法,分布式演算法,和概率演算法。第一節課講的是隨機化的快速排序,但是我覺得當n比較小的時候不適合隨機演算法,因為隨機的過程也在花費時間,...

Pyhont筆記 之 快速排序 隨機化版本

本章使用了 使用python語言實現快速排序演算法 中的函式,具體請參考 使用python語言實現快速排序演算法 randomized quicksort a,p,r if pimport random from quick sort import def randomized quicksort ...