【问题标题】:Non-optimized sorting algorithm, which one to use?非优化排序算法,使用哪一种?
【发布时间】:2021-01-19 09:26:31
【问题描述】:

排序后的数组的最后一个元素被替换为数组中没有出现的随机值。应该使用哪种经典(即非优化)排序算法版本来尽可能高效地对该数组进行排序?

【问题讨论】:

  • 你怎么看?

标签: arrays algorithm sorting


【解决方案1】:

由于除了最后一个元素之外,数组已排序,因此不需要排序。

只需从数组中取出最后一个元素,并将其插入到正确的位置。需要 O(log n) 时间来找到插入它的位置。


附言
正如@Henry 所指出的,实际插入数组(至少在大多数编程语言中)将花费另一个 O(n) 时间,因为它很可能意味着将所有元素向右移动一个释放我们想要插入元素的位置。

【讨论】:

  • 澄清一下:实际插入需要 O(n)
  • @Henry:我说的没什么不同。正如我所写:找到位置需要 O(log n) 实际插入元素的成本取决于数组实现,这导致大多数编程语言的插入成本为 O(n)。
猜你喜欢
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
  • 2011-11-02
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多