选择例程与欺骗?

时间:2012-04-23 04:33:42

标签: algorithm selection big-o median-of-medians

我最近在分析了第k个最小元素算法之后编写了一个程序,首先没有重复的情况。

然而,现在,我想分析预期的渐近运行时间,例如,当有完全j个重复时,查找数组的中位数。我没有为此修改我的代码,因此由于j重复,性能会有所下降。

我不知道该如何开始?有人能指出我这种复发关系吗?

我得到了以下内容,其中n是输入数组的大小

T(n) <= 1/2*T(3/4*n) + 1/2*T(n)

但我不清楚如何处理所涉及的重复密钥。

由于

1 个答案:

答案 0 :(得分:0)

随机解决方案as demonstrated here

 T(n) <= T(3/4*n) + n-1  =>  T(n) <= 4n

算法的复杂性可能取决于j,但不要指望它奇迹般地小于线性时间。为什么?取一个大小为n / 2的随机数组,完全复制它并运行重复问题的理想算法。你有

T(n) <= 4(n/2) => T(n) <= 2n

每个元素重复两次(完全n/2重复)