8.4-1
(1) 首先
n=A.length=10
,然后让
B[0...9]
分别为一个空链表;
(2) 遍历数组
A
,将数组
A
中每一个元素
A[i]
都加到链表
B[⌊nA[i]⌋]
中,得到
B[0]=∅
,
B[1]={0.13,0.16}
,
B[2]={0.20}
,
B[3]={0.39}
,
B[4]={0.42}
,
B[5]={0.53}
,
B[6]={0.64}
,
B[7]={0.71,0.79}
,
B[8]={0.89}
,
B[9]=∅
;
(3) 然后对
B[0...9]
分别进行插入排序,得到
B[0]=∅
,
B[1]={0.13,0.16}
,
B[2]={0.20}
,
B[3]={0.39}
,
B[4]={0.42}
,
B[5]={0.53}
,
B[6]={0.64}
,
B[7]={0.71,0.79}
,
B[8]={0.89}
,
B[9]=∅
;
(4) 然后按
i=0到9
的顺序遍历
B[i]
,将其中的数据逐一取出置于另一数组
C
中,
C={0.13,0.16,0.20,0.39,0.42,0.53,0.64,0.71,0.79,0.89}
,最后返回数组
C
。
8.4-2
因为当所有的元素都在同一个桶中且按降序排列时,在插入排序过程我们将需要的运行时间为
Θ(n2)
。
可以将对桶中数据的排序方法换为归并排序或者其他最坏情况下运行时间为
Θ(nlgn)
的排序方法。
8.4-3
E[X2]=∑i=02i2⋅P{Xi}=12⋅24+22⋅14=32
E2[X]=(∑i=02i⋅P{Xi})2=(1⋅12+2⋅14)2=1
8.4-4
单位元的面积是
π
,我们将单位圆从圆心到圆周按面积等分为
n
个圆环,每个圆环的面积为
πn
。假设圆环内径和外径分别为
a,b
,那么就有
π(b2−a2)=πn
。由于最内的圆环内径外径分别为0和
1n
,所以我们不难知道,所有圆环的内径序列为
ai={0,1n,2n,⋯,in,⋯,n−1n}
。
然后我们就可以进行类似的桶排序:将BUCKET-SORT中的第6行换为
insert di into list B[⌊n2di⌋]
即可。
8.4-5
首先我们将求出
P(x)=0,1n,⋯,n−1n,1
时的
x
的取值序列,假设为
X={x0,x1,⋯,xn−1,xn}
,然后我们按桶排序对这些数进行排序,将BUCKET-SORT算法的第6行改为
⋯