不同概率分布的桶类渐近运行时间

时间:2016-03-03 21:58:08

标签: algorithm time-complexity bucket-sort

考虑一个使用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)。“

  1. 为什么我们使用N / 20和N / 5?
  2. 我们如何从这里获得:
  3. “C1(N / 20)^ 2&lt; = T0(N)&lt; = C2(N / 5)^ 2”

    到这里:

    “T(N)> = T0(N)> =(C1 / 400)N ^ 2 =Ω(N ^ 2)”

    1. 为什么其他水桶可以忽略不计?

0 个答案:

没有答案