这是一个理论问题,因此我们假设需要花费一些时间来比较elements
中的array
。
我们得到array
,其elments
的前半部分比另一半小。什么都没有排序。在最坏的情况下运行时O(n)
还是没有办法对它进行排序?
我认为它不会起作用,因为对于前半部分,它将需要O((n/2)*log(n/2))
时间,对于另一半则相同。总共O(n*log(n/2))
仍为O(n*logn)
?
这是对还是错?如果可能请解释我。
答案 0 :(得分:1)
如果这是真的,你会发现一种革命性的排序方法:对N个元素进行排序,追加N个虚拟元素,使其具有较大的值,按时间O(N)排序并丢弃附加的元素。
答案 1 :(得分:0)
你是对的,在这种情况下你有n*log(n/2) = n*(log(n) - log(2)) = n*log(n) - n*log(2)
的{{1}}