最坏情况下的数组排序w(n)当前半个元素比另一半小时?

时间:2016-06-08 19:03:36

标签: arrays sorting

这是一个理论问题,因此我们假设需要花费一些时间来比较elements中的array

我们得到array,其elments的前半部分比另一半小。什么都没有排序。在最坏的情况下运行时O(n)还是没有办法对它进行排序?

我认为它不会起作用,因为对于前半部分,它将需要O((n/2)*log(n/2))时间,对于另一半则相同。总共O(n*log(n/2))仍为O(n*logn)? 这是对还是错?如果可能请解释我。

2 个答案:

答案 0 :(得分:1)

如果这是真的,你会发现一种革命性的排序方法:对N个元素进行排序,追加N个虚拟元素,使其具有较大的值,按时间O(N)排序并丢弃附加的元素。

答案 1 :(得分:0)

你是对的,在这种情况下你有n*log(n/2) = n*(log(n) - log(2)) = n*log(n) - n*log(2)的{​​{1}}