据我所知,当比较函数为O(N*log(N))
时,有效的排序时间复杂度为O(1)
。
如果比较函数不是O(1)
(即O(M)
),那么时间复杂度是多少?
是O(N*log(N*M))
还是O(N*M*log(N))
?
由于
答案 0 :(得分:2)
如果每次比较需要O(M)时间 - 与O(1)时间相反,则整个排序将花费M倍更长的时间来完成 - O(M * N log N)。这假设M与N一起生长并且不是恒定的。常量通常从大的符号(O(常数)== O(1))中删除,因此这种情况下的复杂性将保持不变。这也假设你的O(Y)排序算法按照O(Y)的顺序进行比较,就像大多数排序算法那样。
答案 1 :(得分:0)
在有效排序alg中,我们有(N)
个项目和每个项目
我们进行了O(LOG N)
比较。排序的结果是:O(N* LOG N)
。
如果比较为O(1)
,我们会:O(1*N)
= O(N)
进行排序。
可以在并行计算机体系结构上并行排序alg。
但是在unparalel计算机中,不可能有O(1*N)