有点看不懂这个基数排序,有没有人能帮忙给我解释一下啊?感谢感谢
对A123 F865这种格式进行排序的
void Single(Sqlist* L, char cmp, int len, int index)
{
int i, x;
Sqlist T[26]; //容纳数字 0 - 9 的 10 个桶 或 字母 A - Z 的 26 个桶
for (i = 0; i <= len; ++i)
T[i].length = 0;
for (i = 0; i < L->length; ++i)
{
x = L->data[i].num[index] - cmp;
T[x].data[++T[x].length] = L->data[i]; //传值
}
int k = 0, j;
for (i = 0; i <= len; ++i)
for (j = 1; j <= T[i]
L->data[k] = T[i].data[j]; //传值
k++;
}
说白了就是定义了26个数组,Sqlist T[26]
然后根据你的数据,根据 x = L->data[i].num[index] - cmp,将数据添加到这26个列表的某一个。这里比如index=0,cmp='A'就是按照第一个字母排序
最后那个循环就是按照顺序将结果复制到L,从而实现了排序