3

基数ソートは、数字の桁を比較することで機能することを知っています。私の質問は、異なる桁数の異なる数字があると仮定します。基数ソートはここで機能しますか? たとえば、3 桁の数字と 6 桁の数字の 2 つの数字を比較する場合、小さい方の数字の最初の 3 桁が 0 であると簡単に想定できます。しかし、実装はどうでしょうか。十分な数字がない場合、それらの数字はゼロであるとプログラムに想定させるにはどうすればよいでしょうか?

ありがとうございました。

4

2 に答える 2

2

どういうわけか、それらの存在しない数字を追加またはシミュレートするか、グループ内の数字を並べ替える必要があります。各グループには、同じ長さの数字のみが含まれています。

これらの3つの数字

9912
 999
 123

に変換することができます

9912
0999
0123

通常の基数ソートを使用してソートするか、2つの独立したグループとしてソートできます。

9912

 999
 123

後者はあなたに与えます(昇順を想定)

 123
 999

前者は同じままです。次に、並べ替えられたグループを(短い番号から長い番号に)結合します。

 123
 999
9912

それで全部です。

于 2013-03-22T11:57:34.547 に答える