私が持っている本には次のように書かれています。
a) 値の 1 桁に基づいて、1 次元配列の各値をバケット配列の行に配置します。たとえば、97 は 7 行目に、3 は 3 行目に、100 は 0 行目に配置されます。これを「配布パス」と呼びます。
b) バケット配列を行ごとにループし、値を元の配列にコピーして戻します。これを「ギャザリングパス」と呼びます。1 次元配列の前の値の新しい順序は、100、3、および 97 です。
c) 後続の桁位置ごとにこのプロセスを繰り返します。
これを理解して実装するのに苦労しています。これまでのところ、私は持っています:
void b_sort(int sarray[], int array_size) {
const int max = array_size;
for(int i = 0; i < max; ++i)
int array[i] = sarray[i];
int bucket[10][max - 1];
}
それらを1、10、100などでソートするには、これを使用できると考えています:
for(int i = 0; i < max; ++i)
insert = (array[i] / x) % 10;
bucket[insert];
ここで、x = 1、10、100、1000 などです。今、これをどのように書くか完全に迷っています。