基数ソートを使って文字列をソートするプログラム(正確な長さは7文字)を作らなければなりません。私は既に各列を別々にソートする関数を作っています。私の問題は、1つの文字だけでなく、文字列全体を移動させる方法です。私が実際にC言語でどのように動作すべきかを知るには本当に問題があります。基数ソート中に文字列を貼り付けるには?
私は1つの配列 "char strings [3] [8]"と "char output [3] [8]"を作成して、それぞれ7文字。例えば、これらの文字列を並べ替え:出力で
strcpy(strings[0], "kupbars");
strcpy(strings[1], "daparba");
strcpy(strings[2], "jykaxaw");
は私が取得:
dakaaaa
juparbs
kypbxrw
各列が正しくソートされますが、文字が一緒に固執しないでください。私は3時間何度も試してみましたが、何もできません。
私のコードは次のようになります。
void countingSort(char a[][8], char b[][8]) {
int c[123];
for (int pos = 6; pos >= 0; pos--) {
for (int i = 0; i < 123; i++)
c[i] = 0;
for (int i = 0; i < 3; i++)
c[(int)a[i][pos]]++;
for (int i = 1; i < 123; i++)
c[i] += c[i - 1];
for (int i = 2; i >= 0; i--) {
b[--c[(int)a[i][pos]]][pos] = a[i][pos];
}
}
}
(。それは変数にそれを変更するのは簡単ですので、文字列の長さなどを制限する定数があります - 私はちょうど適切にこのプログラムの仕事を得ることに焦点を当てた)
、私はそれは通常、全体の文字列へのポインタを持つことになり、各桁のバケットのリンクリストで実装だと信じています。 (より複雑なデータ構造が必要ですが、その場で行うのは難しいです) – qxz