首页 > 代码库 > 基数排序
基数排序
基数排序:时间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); } }
基数排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。