Мне нужно сделать программу, которая сортирует строки (с точной длиной 7 символов), используя сортировку по методу radix. Я уже сделал функцию, сортирующую каждый столбец отдельно. Моя проблема заключается в том, как заставить всю строку двигаться, а не только один символ. Мне действительно проблематично видеть, как это должно работать в C.Как заставить строки склеиваться во время сортировки по радиусу?
Я сделал один массив «char strings [3] [8]» и «char output [3] [8]», чтобы отсортировать 3 строки с точными 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