Написание сортировки сегментов на c ++

В моей книге говорится следующее:

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 и т. Д. Я совершенно не понимал, как это писать сейчас.

5
задан borrible 16 February 2012 в 18:57
поделиться