【问题标题】:Array sort in worst case w(n) works when first half elements smaller than other half?当前半部分元素小于另一半元素时,最坏情况下的数组排序 w(n) 有效?
【发布时间】:2016-06-08 19:03:35
【问题描述】:

这是一个理论问题,因此假设比较array中的elements需要恒定的时间。

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

我认为这行不通,因为对前半部分进行排序需要O((n/2)*log(n/2)) 时间,后半部分也是如此。总的来说,这将是O(n*log(n/2)),所以还是O(n*logn)? 这是对还是错?如果可能,请解释一下。

【问题讨论】:

    标签: arrays sorting


    【解决方案1】:

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

    【讨论】:

    • 调用 tertium non datur 会激怒建构主义者 :D +1
    • @BeyelerStudios:他们在量子计算方面保持了机会 :)
    【解决方案2】:

    你是对的,在这种情况下你会有n*log(n/2) = n*(log(n) - log(2)) = n*log(n) - n*log(2),它在O(n*log(n))

    【讨论】:

      猜你喜欢
      • 2022-12-05
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 2020-12-11
      • 2016-12-05
      相关资源
      最近更新 更多