对数组中最小的n / logn元素进行排序

时间:2014-08-31 23:17:37

标签: algorithm data-structures

如何在n/(log n)中对数组中最小的O(n)元素进行排序?

我知道如何对最小的k元素进行排序O(n+k*log k),但如何将此问题用于我的问题?

2 个答案:

答案 0 :(得分:4)

如果k = n /(log n),那么使用你知道的算法将采用O(n +(n /(log n))* log(n /(log n))),并且因为n> n /(log n),log n> log(n /(log n)),因此这也是O(n)。

答案 1 :(得分:1)

我认为您现有的解决方案已经完成了卡车:如果您替换

k = n/(log n)

你得到了

total = O(n + (n/log n) * log (n / log n))

使用log (a/b) = log a - log b

total = O(n + (n / log n) * (log n) - (n / log n) *log log n)

total = O(n + n - (n / log n) *log log n)

我们可以抛弃否定词:如果f < g而不是O(f),那么O(g)

total = O(2 * n)

最后,big-O让我们忽略了常数因素:

total = O(n)