Книга, которую я имею, говорит это:
a) Поместите каждое значение одномерного массива в ряд массива сегментов на основе цифры единицы. Например, 97 помещается в строку 7, 3 помещается в строку 3, а 100 помещается в строку 0. Это называется «проходом распределения».
b) Циклически перебирайте массив блоков за строкой и копируйте значения обратно в исходный массив. Это называется «проходной билет». Новый порядок предыдущих значений в одномерном массиве - 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];
}
Я думаю, что для сортировки их по единицам, десяткам, сотням и т. Д. Я могу использовать это:
for(int i = 0; i < max; ++i)
insert = (array[i] / x) % 10;
bucket[insert];
где x = 1, 10, 100, 1000 и т. Д. Я совершенно заблудился, как написать это сейчас.