Programming Pearls には、さまざまな長さの配列をソートするアルゴリズムがありますが、それらの長さの合計に比例して時間でソートします。たとえば、レコード arrayx[0...n-1]
があり、各レコードに整数の長さと array へのポインタがあるとしますbit[0...length-1]
。
コードは次のように実装されています。
void bsort(l, u, depth){
if (l >= u)
return ;
for (i = l; i <= u; i++){
if (x[i].length < depth)
swap(i, l++);
}
m = l;
for (int i = l; i < u; i++){
if (x[i].bit[depth] == 0)
swap(i, m++);
}
bsort(l, m - 1, depth + 1);
bsort(m, u, depth + 1);
}
私の質問は、記録を考えると、次のとおりです。
x[6] = {"car", "bus", "snow", "earth", "dog", "mouse"}
文字列の長さを取得する方法はわかっていますが、ビット配列の場合はどうでしょうか。この文字列配列に適したビット配列を作成するにはどうすればよいですか? そして、x[i].bit[depth]
どうすればこれを実装できますか?