基数排序,对浮点数据进行排序

时间:2011-01-09 18:25:07

标签: algorithm radix-sort

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

2 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:1)

不是开箱即用的,但你有一些选择。您可以对数据进行离散化,例如,乘以100并进行舍入(对于上面的示例,您将拥有5,9和102)。您还可以对数据进行bucketize(按范围对数字进行分组,如0