CLRS 7 3快速排序的隨機化版本

2021-07-05 15:51:03 字數 919 閱讀 1652

7.3-1

在隨機化演算法下,最壞執行時間不會由乙個特定的輸入產生,而且也不能控制它重複產生,因此我們並不關心它。

7.3-2

最壞情況下 t(

n)=t

(n−1

)+1=

θ(n)

。 最好情況下 t(

n)=2

t(n/

2)+1

=θ(n

) 。

附上隨機化演算法**

#include 

#include

using

std::cout;

using

std::endl;

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

}int temp = *(array + r);

*(array + r) = *(array + i + 1);

*(array + i + 1) = temp;

return i + 1;

}void quicksort(int *array,int p,int r)

}int randomized_partition(int *array,int p,int r)

return partition(array,p,r);

}void randomized_quicksort(int *array,int p,int r)

}int main()

; randomized_quicksort(ia,0,15);

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

cout

<< ia[i] << ' ';

cout

<< endl;

return

0;}

隨機化快速排序

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比較小的時候不適合隨機演算法,因為隨機的過程也在花費時間,...

演算法導論7 3快速排序的隨機化版本

以下摘自網路 隨機化快排 快速排序的最壞情況基於每次劃分對主元的選擇。基本的快速排序選取第乙個元素作為主元。這樣在陣列已經有序的情況下,每次劃分將得到最壞的結果。一種比較常見的優化方法是隨機化演算法,即隨機選取乙個元素作為主元。這種情況下雖然最壞情況仍然是o n 2 但最壞情況不再依賴於輸入資料,而...