【问题标题】:what sorting algorithm has time complexity Θ(N)?什么排序算法的时间复杂度为 Θ(N)?
【发布时间】:2022-01-09 13:25:04
【问题描述】:

什么排序算法的时间复杂度为Θ(N)?

Θ 这个符号是否意味着最坏的时间复杂度

线性搜索时间复杂度为 Θ(N),但它不是排序算法...

【问题讨论】:

  • 没有排序算法具有O(N) 复杂度。最好的是O(NLogN)
  • @Enigmativity 这显然不是真的......基于直方图的排序是O(N),它们也被称为countingbucket 英文排序。但是它们不能用于任意数据。它对排序数据的动态范围与直方图所需的内存有一些限制。
  • Θ(N) (Big Theta of N) 表示算法的时间复杂度等级正好是 N。O(N) (Big O of N) 表示复杂度是 N 或更好,Ω (N) 表示复杂度为 N 或更差。 Big O wiki

标签: math time time-complexity


【解决方案1】:

如果数组中的数字是非负数并且足够小,以至于可以声明数组的大小是数组的最大数,那么您可以使用计数排序。 https://en.wikipedia.org/wiki/Counting_sort

【讨论】:

  • 如果使用负数会怎样?
  • 在负数的情况下,你可以从数组中找到最小的数字,假设它是-x,然后将x添加到所有数字中。使用计数排序对数组进行排序。将-x添加到所有号码