#include
using namespace std;
#define ME 20;//线性表的最多元素个数
#define MR 10;//基数的最大值
#define MD 10;//关键字的最大值
typedef char Elm;
struct node
{
Elm data[MD];//关键字的位数
node* next;
} ;
//O(d*(n+r))
void radixSort(node *& p,int r,int d )//p为待排链表的指针,r 为基数,d 为关键位数
{
node* qh[MR];//基数队列头指针
node* qr[MR];//基数队列尾指针
node* t;
int i,j,k;
for(i= d-1;i>=0;i--)//关键字的位数循环次数
{
for(j=0;j
data[i]-'0';
if(qh[k]==NULL)
{
qh[k]=p;qr[k]=p;
}
else
{
qr[k]->next=p;
qr[k]=qr[k]->next;
p=p->next;
}
}
p=NULL;
for(j=0;j
next=qh[j];
t=qr[j];
}
}
}
t->next=NULL;//相当于 p 的尾巴为NULL
}
}
基数排序 radixSort 实现
最新推荐文章于 2022-09-14 11:00:01 发布