基数排序模板
void work(vector<int>&a,int cnt){
//a表示需要排序的数组,cnt表示数组中元素最高多少位
//复杂度O(n*cnt)!
for(int i=1,t=1;i<=cnt;i++,t*=10){
vector<int>pre(10,0);
vector<int>tmp(n);
for(int j=0;j<n;j++){
pre[(a[j]/t)%10]++;
}
for(int j=1;j<=9;j++){
pre[j]+=pre[j-1];
}
for(int j=n-1;j>=0;j--){
tmp[pre[(a[j]/t)%10]-1]=a[j];
pre[(a[j]/t)%10]--;
}
a=tmp;
}
}

浙公网安备 33010602011771号