隨機化快速排序

2021-05-05 00:07:19 字數 365 閱讀 1719

#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]為主元

//劃分為小於主元和大於主元的兩部分,返回主元的下標q

//例如:a[1..6]=結果:a[1..6]= q=4

//(元素順序可能與結果不一致,但小於10的元素在10前面,大於10的元素在10後面)s

int partition(int *pa,int p,int r)

隨機化的快速排序

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

快速排序之隨機化

快速排序的思想就是選擇乙個基準數,讓每個數與它比較,找到它在所有這些數排好序後應該在的位置。而快速排序對大體應經排好序的數執行效率是n 2,所以對基準數隨機化,以下 include include using namespace std 產生m到n的隨機數 int random int m,int ...

演算法導論 隨機化的快速排序

public void random quicksort int array,int left,int right public int random position int array,int left,int right param array 待排序的陣列 param left 左邊界 pa...