2011-01-09 10 views
10

浮動小数点データのソートが可能な基数ソートは0.5,0.9,1.02などですか?基数ソート、浮動小数点データのソート

+0

バケットを0と1に減らすことで基数ソートを実装したいのですが、すべての入力をバイナリ値に変換してから基数ソートに進むと、これはソートを高速化するオプションになります。基数は以前より少し遅くソートされますか?ありがとう。 – BGV

答えて

1

デフォルトではありませんが、いくつかのオプションがあります。データを離散化するには、たとえば100を掛けて四捨五入します(上の例では5,9,102となります)。また、データをバケット化することもできます(範囲を0-x < = 1,x < = 2のようにグループ化して、各バケット内でソートします)。

24

はい、可能です。負の値を正しく処理するには、追加パスが必要です。 Pierre TerdimanおよびMichael Herfの記事では、その実装方法が詳細に説明されています。つまり、浮動小数点数を符号なし整数に変換してソートし、浮動小数点数に変換し直す必要があります(そうしないと、負の値は正の整数の後に正しくソートされません)。

これらのメソッドには、データにエラーを導入しないという利点があります(プロセッサがIEEE 754標準に従ってフロートを格納する場合)。

+0

+1素晴らしい記事です。 –

+1

基数ソートをマージソートのSPU並列化バージョンと比較した別の興味深い記事(http://seven-degrees-of-freedom.blogspot.com/2010/07/question-of-sorts.html)があります。要約すると、複雑(複雑さは基数ソートのO(n log n)である)より複雑なマージソートは、より簡単に並列化され、最終的に勝つことができます。 –

関連する問題