//为什么不从高位到低位排序,首先输入的所有的数中的各个数的位数不一定相同,只通过对高位进行一次排序是不行的,
#include <iostream>
using namespace std;
const int base=10;//
struct wx
{
int num;
wx *next;
wx()
{
next=NULL;
}
};
wx *headn,*curn,*box[base],*curbox[base];
void basesort(int t)
{
int i,k=1,r,bn;
for(i=1;i<=t;i++)
{
k*=base;
}
r=k*base;
for(i=0;i<base;i++)
{
curbox[i]=box[i];//两者指向同一空间
}
for(curn=headn->next;curn!=NULL;curn=curn->next)//每一轮都将按第i位排好序
{
bn=(curn->num%r)/k;
curbox[bn]->next=curn;
curbox[bn]=curbox[bn]->next;
}
curn=headn;
for(i=0;i<base;i++)//再把经过第i次排序后的个队列链接起来,形成按最低位排序的一个新的单链表
{
基数排序
最新推荐文章于 2021-04-13 14:46:22 发布