arrays - 已知上限的桶排序的复杂性?

标签 arrays algorithm sorting big-o

假设我们有一个数组,我们知道所有元素都是 0...2n 并且没有排序。

如果我们使用复杂度为 O(n+k) 的桶排序算法,其中 k 是元素的范围,在本例中为 2n,那么对该数组进行排序的复杂度是否为 θ(n)?

我的理由是,运行时间是 O(n + 2n),它与 ​​O(3n) 相同,并且由于 3 只是一个系数,因此复杂度为 θ(n)。

这个分析准确吗?

最佳答案

是的,你的分析是正确的。计数排序的运行时间是 θ(n + k),其中 n 是元素的数量,k 是桶的数量。如果对于任何固定常数 c 来说最大值是 cn,那么计数排序的运行时间将为 θ(n),正如您所提到的。

希望这有帮助!

关于arrays - 已知上限的桶排序的复杂性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19609547/

相关文章:

python idastar vs astar解决8个难题

创建唯一的随机项目串联的算法

Python3 使用 Lambda 和 Sort 对元组列表进行排序

通过 Comparator<T> 进行的 Java 排序将大部分时间花在 compare(Object,Object) 上

c++ - 具有 vector vector 的多种数据类型

javascript - 我的程序适用于 array::forEach 但不适用于 for 循环

algorithm - 将前 10% 的未排序 RDD 作为 Spark 中的另一个 RDD 返回的有效方法?

java - Java中如何合并两个对象?

Java Generic Primitive 类型 n-d 数组

javascript正确排序十进制数字