考虑一个使用N个桶对N个元素进行排序的桶式排序算法,我们使用插入排序对每个桶中的元素进行排序。
假设分析错误地分析了概率分布,结果是每个元素有10%的机会被置于桶0中。被放置在任何其他桶中的概率是均匀的。
此算法的平均渐近运行时间是多少?
我的教授详细介绍了一个解决方案,但我在各个方面感到困惑。这是解决方案:
“当N增加时,我们可以预期第一个时隙中有N / 10个元素。实际上,N / 20和N / 5的概率基本上是1.
大小为k的列表的插入排序的平均比较数是Θ(k ^ 2)。也就是说,存在常数C1和C2,使得:
C1k ^ 2< = #comparisons< = C2k ^ 2
第一个时段的比较数T0(N)将落在以下范围内:
C1(N / 20)^ 2 <= T0(N)&lt; = C2(N / 5)^ 2
对于我们的比较总数:
T(N)> = T0(N)> =(C1 / 400)N ^ 2 =Ω(N ^ 2)
期望剩余的桶有1-2个元素,因此比较out#0桶的比例可以忽略不计。最糟糕的情况是:
T(N)&lt; = C2N ^ 2 = O(N ^ 2)
由于T(N)= O(N ^ 2)&amp; T(N)=Ω(N ^ 2),我们得出结论:T(N)=Θ(N ^ 2)。“
“C1(N / 20)^ 2&lt; = T0(N)&lt; = C2(N / 5)^ 2”
到这里:
“T(N)> = T0(N)> =(C1 / 400)N ^ 2 =Ω(N ^ 2)”