我的一本书是这样说的:
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 等。我现在完全不知道如何写这个。