繁体   English   中英

就时间复杂度而言,计数或基数排序哪个更受欢迎?

[英]Counting or Radix sort which is preferred in terms of time complexity?

我从集合 {0,1,…,n} 中得到一个整数数组,其中我需要在 O(n) 时间内对数组进行排序。 但我不确定是否对这个问题进行基数/计数排序。 任何人都可以就此提出您的建议吗?

如果你需要在O(n)时间内排序,那么计数排序是唯一的选择。 它有Θ(n)时间和Θ(n)空间复杂度。

在最坏的情况下,基数排序需要O(n log(n))时间(因为在您的情况下键的长度是log(n) ),而快速排序在平均情况下是O(n log(n))并且可以是O(n²)在最坏的情况下,取决于实现。

如果 n 小到足以让 n 个元素的数组适合内存,那么计数排序将是最快的。

对于较大的 n,需要进行基数排序。 如果键以 32 位或 64 位整数形式存储,则基数 256 基数排序将需要 4 遍(32 位),8 遍(64 位)。 由于时间复杂度忽略了常数,那么这种基数排序在技术上的时间复杂度为 O(n)。 但是,如果基数排序使用最大键值来减少传递次数,那么时间复杂度将为 O(n log(n))(实际复杂度为 n ceil(log256(n)))。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM