如何在n/(log n)
中对数组中最小的O(n)
元素进行排序?
我知道如何对最小的k
元素进行排序O(n+k*log k)
,但如何将此问题用于我的问题?
答案 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)