O(nk(log(k)))算法是否与O(n(log(k))相同

时间:2014-03-04 14:42:21

标签: algorithm sorting big-o time-complexity

我被要求提供一个应该是O(n(log(k)))的算法 k是数组的数量,n是所有这些元素的总数。我不得不对数组进行排序。 减去细节我提出了一个算法,该算法在klog(k)倍的元素总数中完成工作。即O(nk(log(k)))

同样在这种情况下,k比n小得多,所以它不会是n ^ 2(logn)(在k和n几乎相同的情况下)对吗?

2 个答案:

答案 0 :(得分:2)

嗯,不,这不一样。如果k是复杂性表达式中的变量(而不是常量),那么O(nk(log(k))) > O(n(log(k)))

这是因为没有常数CCn(log(k)) > kn(log(k)) n, k

答案 1 :(得分:1)

您描述问题的方式kn都是输入参数。如果是这种情况,则问题的答案是

'不,O(n*k *log(k))O(n*log(k))'不同。

不难看出第一个比第二个增长得快,但如果你修复n.的值,则更加明显。考虑n开始一个常数说1。比较明显的是O(k*log(k))O(log(k))不同。