【问题标题】:C++ RadixSort efficient waysC++ RadixSort 高效方法
【发布时间】:2017-03-19 09:18:22
【问题描述】:

我正在尝试在 C++ 中实现 Radix Sort 算法,尝试对 int 数组进行排序。
据我所知,有两种可能的方法:

  1. 按二进制数字排序,例如使用按位运算符逐位获取并将它们排序到 2 个桶(0 和 1)中。

  2. 按十进制数字排序,即 10 个桶(0 到 9)。

但是,我看不出两者中哪一个更有效。仅在 2 个桶中排序似乎效率很低,但使用十进制数字意味着无法使用快速的按位运算符,而我必须使用特别慢的 %/ 运算符。

那么其中哪一个会更快? (PS:我正在开发的代码将用于时间非常关键的部分,这就是我问的原因)

【问题讨论】:

    标签: c++ sorting radix-sort


    【解决方案1】:

    通常将一个排序为 2 次方的桶数,这样可以减少通过次数并从按位运算中受益。

    【讨论】:

    • 那么尝试 1 会更有意义吗?因为我看不到如何将桶的数量增加到例如如果我使用按位运算符,则为 4 或 8。
    • 或者你的意思是排序,例如通过十六进制数字可以组成 16 个桶?
    • 不一定是“十六进制数字”,而是一组二进制数字,是的。
    猜你喜欢
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2017-12-24
    • 2020-02-15
    相关资源
    最近更新 更多