В моей книге говорится следующее:
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 и т. Д. Я совершенно не понимал, как это писать сейчас.