标签:
基数排序:时间O(d(n+rd)) d:关键字个数,n:元素数,rd:关键字的取值范围 空间O(rd) 注:对于数值类排序,只能从低位到高位进行基数排序,能有序,(高到低,不行) void RadixSort(int *&p,int r,int d)//p为带排序的单链表指针,r为基数,d为关键字位数 { int *head[MAXR],*tail[MAXR],*t; int i,j,k; for(i=0;i<=d-1;i++)//低位到高位循环 { for(j=0;j<r;j++) head[j]=tail[j]=NULL;//初始化链指针 while(p!=NULL)//分别入各自队 { k=p->data[i]-'0'; if(head[k]==NULL) { head[k]=p; tail[k]=p; } else { tail[k]->next=p; tail[k]=p; } p=p->next; } p=NULL; for(j=0;j<r;j++)//连接各队 { if(head[j]!=NULL) { if(p==NULL) { p=head[j]; t=tail[j]; } else { t->next=head[j]; t=tail[j]; } } } t->next=NULL; //printf(" %s 位排序\t",(i==0?"个":"十")); //DispPrint(p); } }
标签:
原文地址:http://blog.csdn.net/ndzjx/article/details/42460449