2011-01-09 145 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