2011-01-09 113 views
10

基数排序能够排序浮点数据,例如0.5,0.9,1.02等。基数排序,排序浮点数据

+0

我想实施基数排序通过减少其桶到0和1只意味着我会将每个输入转换为其二进制值,然后进行基数排序,这是一个选项,以加快其排序或这将使基数排序比以前慢一点点?谢谢。 – BGV 2011-01-12 18:00:25

回答

1

不是开箱即用,但您有一些选择。你可以离散数据,例如乘以100和四舍五入(这样你就可以得到5,9和102的例子)。您也可以将数据分组化(按范围对数字进行分组,如0 < x < = 1,1 < x < = 2),然后在每个存储桶中进行排序。

24

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

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

+0

+1优秀文章。 – 2011-01-09 19:08:34