计数还是基数排序在时间复杂性方面更可取



我得到了一个集合{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为基数的排序将对32位进行4次遍历,对64位进行8次遍历。由于时间复杂度忽略了常数,因此从技术上讲,这样的基数排序具有时间复杂度O(n(。然而,如果基数排序使用最大键值来减少通过次数,则时间复杂度将为O(n-log(n(((实际复杂度将是n-ceil(log256(n(。(。

相关内容

  • 没有找到相关文章

最新更新