隨機化的快速排序

2021-06-25 16:47:33 字數 1042 閱讀 9577

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

敲**是要花費時間的,這個能力真心很弱,本來打算10分鐘應該就可以寫出來,結果花了幾個小時,網上對陣列劃分的那個key的位置一般都是第乙個或者是最後乙個,我本來打算讓快排的位置隨機化,但是感覺很複雜。先在這裡記錄下吧,我要讀書!!!!還有好多書沒有讀

這是在網路上看到的一些話:

很多人覺得自己技術進步很慢,學習效率低,我覺得乙個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6公尺吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有乙個足夠量的知識量+足夠良好的知識結構,系統化以後就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞併他的知識結構體系的話,讀到他言語中的乙個詞我們就已經知道他要表達什麼,我們可以讓他坐「上位」畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

下面是隨機的快速排序。和網上的版本都差不多,我也就不多解釋了。

#include #include #include #define m 10

int data[m];

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

for(; pkey)

}a[p] = key;

return p;

}int random_partition(int *a, int p, int r)

void quicksort(int *data, int begin, int end)

} int main()

{ int n;

scanf("%d", &n);

for(int i=0; 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 為主元 劃分為小於主元和大於主元...

快速排序之隨機化

快速排序的思想就是選擇乙個基準數,讓每個數與它比較,找到它在所有這些數排好序後應該在的位置。而快速排序對大體應經排好序的數執行效率是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...