算法导论8-4

读书笔记

本小节介绍了桶排序,桶排序是将元素按照规则放在一个个递增区间内,区间之间是递增的,区间内部也是递增的,最后依次合并区间得到次序;

具体过程如下:

桶排序过程

伪代码如下:

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

参照图8-4的方法,说明\(BUCKET-SORT\)在数组\(A=<0.79, 0.13, 0.16, 0.64, 0.>\)

8.4-2

解释为什么桶排序在最坏情况下运行时间是\(n^2\)?我们应该如何修改算法,使其在保持平均情况为线性时间的代价的同时,最坏情况下时间代码为\(O(n\lg{n})\)

  1. 因为插入排序的时间复杂度为\(\theta(n^2)\)
  2. 将排序过程换成快速排序。

8.4-3

\(X\)是一个随机变量,用于表示在将一枚硬币抛掷两次时,正面朝上的次数。\(E[X^2]\)是多少呢?\(E^2[X]\)是多少呢?

X 0 1 2
P 1/4 1/2 1/4

所以\(E[X]=0*\frac{1}{4}+\frac{1}{2}+2* \frac{1}{4}=1\)\(E[X^2]=2\), \(E^2[X]=1\)

posted @ 2021-01-15 10:59  ijkzen  阅读(172)  评论(0编辑  收藏  举报