#include #include #include using namespace std; struct node{ int score; int sequence; char name[51]; }a[310],b[310]; int maxbit(node data[], int n) //辅助函数,求数据的最大位数 { int d=1;//统计最大的位数 int p=10; for(int i=0;i=p) { p*=10; ++d; } } return d; } void RadixSort(node data[], int n) //基数排序 { int d=maxbit(data,n); //求最大位数 node *tmp=new node[n]; //辅助数组 int *count=new int[10]; //计数器 int i,j,k; int radix=1; for(i=1;i<=d;i++) //进行d次排序,降序只需要改变桶 { for(j=0;j<10;j++) count[j]=0; //每次分配前清空计数器 for(j=0;j=0;j--) //将所有桶中记录依次收集到tmp中 { k=(data[j].score/radix)%10; tmp[--count[9-k]]=data[j]; } for(j=0;j