演算法導論8 4

2022-07-07 15:36:12 字數 1249 閱讀 5241

本小節介紹了桶排序,桶排序是將元素按照規則放在乙個個遞增區間內,區間之間是遞增的,區間內部也是遞增的,最後依次合併區間得到次序;

具體過程如下:

偽**如下:

bucket-sort(a)

n = a.length

let b[0..n-1] be a new array

for i = 0 to n-1

make b[i] an empty list

for i = 1 to n

insert a[i] into list b[⌊na[i]⌋]

for i = 0 to n-1

sort list b[i] with insertion sort

concatenate tthe list b[0], b[1],...,b[n-1] together in order

事實上偽**的第\(6\)行沒有解釋清楚,首先陣列\(b\)空間大小只有\(n\),可是\(\lfloor na[i] \rfloor\)又明顯大於\(n\),這顯然說不通。

然後我在網上搜尋到了這一篇文章:排序演算法之桶排序的深入理解以及效能分析

參照圖8-4的方法,說明\(bucket-sort\)在陣列\(a=<0.79, 0.13, 0.16, 0.64, 0.>\)

解釋為什麼桶排序在最壞情況下執行時間是\(n^2\)?我們應該如何修改演算法,使其在保持平均情況為線性時間的代價的同時,最壞情況下時間**為\(o(n\lg)\)?

因為插入排序的時間複雜度為\(\theta(n^2)\)。

將排序過程換成快速排序。

設\(x\)是乙個隨機變數,用於表示在將一枚硬幣拋擲兩次時,正面朝上的次數。\(e[x^2]\)是多少呢?\(e^2[x]\)是多少呢?

x01

2p1/41/2

1/4所以\(e[x]=0*\frac+\frac+2* \frac=1\),\(e[x^2]=2\), \(e^2[x]=1\)

演算法導論8 4

問題 n個紅色水壺和n個藍色水壺,相同顏色水壺可盛的水都不一樣多,但每乙個紅色水壺都有乙個對應的藍色水壺,二者可盛的水一樣多。不同顏色的水壺可以互相比較判斷可盛的水是否一樣多。但是相同顏色的水壺不能相互比較。設計乙個隨機演算法,其期望的比較次數為o nlgn 思路 紅色水壺和藍色水壺比較,可在找到與...

演算法導論 思考題 8 4

寫一下我的思路,大概是對的,詳細證明不出來。設藍色水壺為a,紅色為b 先取乙個a1,對所有的b做一次比較,可以將b分為兩個部分,一部分大於a1,一部分小於a1 再取乙個a2,將b分為三個部分 再取a3,將b分為四個部分 假設現在b被分成了k個部分,b1,b2,b3.bk,每次取ai,都從b集合的一半...

演算法導論 隨機演算法

一.概率分布 對於有些問題本身是屬於概率問題,如僱傭問題 對於此類問題,我們需要利用概率分析來得到演算法的執行時間,有時也用來分析其他的量。例如,僱傭問題中的費用問題也需要結合概率分析來計算得到。為了使用概率分析,我們必須使用或者假設已知關於輸入的概率分布,然後通過分析該演算法計算出平均情況下的執行...