15

基数排序是否能够对浮点数据进行排序,例如 0.5、0.9、1.02 等?

4

2 回答 2

27

对的,这是可能的。它需要额外的通过才能正确处理负值。Pierre TerdimanMichael Herf的文章详细讨论了如何实现它。简而言之,您将浮点数转换为无符号整数,对其进行排序,然后将它们转换回浮点数(这是必需的,否则负值将错误地排在正值之后)。

他们的方法的优点是您不会在数据中引入任何错误(前提是您的处理器根据 IEEE 754 标准存储浮点数)。

于 2011-01-09T18:52:41.267 回答
1

不是开箱即用的,但您有一些选择。您可以离散化数据,例如,通过乘以 100 并四舍五入(对于上面的示例,您将拥有 5、9 和 102)。您还可以对数据进行分桶(按范围对数字进行分组,如 0 < x <= 1、1 < x <= 2),然后在每个桶中排序。

于 2011-01-09T18:29:21.187 回答