В одной книге, которая у меня есть, говорится следующее:
а) Поместите каждое значение одномерного массива в строку массива сегментов на основе разряда единиц значения. Например, 97 помещается в строку 7, 3 — в строку 3, а 100 — в строку 0. Это называется «проходом распределения».
б) Прокрутите массив корзины построчно и скопируйте значения обратно в исходный массив. Это называется «сборный пас». Новый порядок предыдущих значений в одномерном массиве — 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 и т. д. Я совершенно не понимаю, как это написать сейчас.