常見排序演算法 隨機化快速排序演算法

2021-09-24 22:49:53 字數 631 閱讀 9377

基本思想:在快速排序的思想上,對基數的選擇採用了乙個隨機化的選擇。

1.對於遞迴到某一層的陣列中,在該陣列中隨機化選擇乙個數字,把陣列中的數字分為兩部分,比該數字小的資料都放在它的左邊,比該數字大的資料都放在它的右邊。

2.適用遞迴的思路對每次選出來的數字的左右兩邊進行排序。

**:

#include #includeusing namespace std;

int randominrange(int start, int end)

int partition(int data, int start, int end)

} ++small;

swap(data[small], data[end]);//將選出來的數字放在合適的位置

return small;

}void random_quicksort(int data, int start, int end)

int main();

random_quicksort(list,0, sizeof(list) / sizeof(int)-1);

for (int i = 0; i < sizeof(list) / sizeof(int); i++)

}

隨機化快速排序

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 為主元 劃分為小於主元和大於主元...

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

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

經典演算法 快速排序的隨機化版本

一般的快速排序,在最壞的情況下時間複雜度為n2,這在輸入資料有序的情況下會出現,我們應該盡量去避免它。採取的策略是,在選擇分割點的時候,不再選擇第乙個點或者最後乙個點,而是隨機選擇乙個點,然後將它與第乙個點互換。include includeusing namespace std int parti...