Exersise
*8.4-5 定义随机变量 X X X的概率分布函数 P ( x ) = P r { X ≤ x } P(x)=Pr\{X\leq x\} P(x)=Pr{X≤x}。假设有 n n n个随机变量 X 1 , X 2 , ⋯ , X n X_1,X_2,\cdots,X_n X1,X2,⋯,Xn。服从一个连续概率分布函数 P P P,且它可以在 O ( 1 ) O(1) O(1)的时间内被计算得到。设计一个算法,使其能够在平均情况下在线性时间内完成这些数的排序。
令 P ( y i ) = P r { X ≤ y i } = i n P(y_i)=Pr\{X\leq y_i\}=\frac{i}{n} P(yi)=Pr{X≤yi}=ni, i = 1 , ⋯ , n i=1,\cdots ,n i=1,⋯,n
P ( y 1 ) = 1 n P(y_1)=\frac{1}{n} P(y1)=n1
P ( y 2 ) = 2 n P(y_2)=\frac{2}{n} P(y2)=n2
P ( y 3 ) = 3 n P(y_3)=\frac{3}{n} P(y3)=n3
⋯ \cdots ⋯
P ( y n ) = 1 P(y_n)=1 P(yn)=1
解出 y i y_i yi作为桶排序中桶的序号,如果 X ∈ ( − ∞ , y 1 ) X\in(-\infin,y_1) X∈(−∞,y1)则把 X X X放入 y 1 y_1 y1桶内,如果 X ∈ ( y 1 , y 2 ) X\in(y_1,y_2) X∈(y1,y2)则把 X X X放入 y 2 y_2 y2桶内,以此推类,平均情况下每个桶大小大致相同,桶排序可以在 Θ ( n ) \Theta(n) Θ(n)内完成。最坏情况下,每个 X X X都在 ( y n − 1 , y n ) (y_{n-1},y_n) (yn−1,yn)之间,即最后一个桶中,寻找桶需要花费 O ( n 2 ) O(n^2) O(n2),排序需要花费 O ( n 2 ) O(n^2) O(n2),一共花费 O ( n 2 ) O(n^2) O(n2)。