首页 > 编程知识 正文

基数排序排序基数为3,二维数组a按行优先顺序存储

时间:2023-05-06 04:47:55 阅读:63535 作者:2374

算法表明数值小,适合集中的情况。

)1)将当前位初始化为最低位

)2)遍历数组a,将当前位值为I的数插入铲斗t[i]

)3)从水桶0到水桶9按此穿越所有水桶,并将数值按此存储在a数组中(覆盖原数组) )。

)4)当前位数最高时退出。 否则,当前位提升一位,转到(2)

代码# include bits/stdc.husingnamespacestd; 常数上限=110; int a[maxn]; //元序列vectorint t[10]; //10桶voidLSD(intn ) { int maxv=-1e9; for(intI=0; iN; I ) maxv=max(maxv,a[i]; int radix=1; //取哪一个while(maxv ) { maxv/=10; for(intI=0; i10; I ) t(I ).clear ); for(intI=0; iN; I ) { int tmp=a[i]/radix; tmp%=10; t[tmp].push_back(a[I]; (} int cnt=0; for(intI=0; i10; I ) for(intj=0; jt[i].size (; j ) a[cnt ]=t[i][j]; } radix*=10; }}int main () { int N; wile(cinn ) ) for ) intI=0; iN; I ) cina[i]; LSD(n; for(intI=0; iN; I ) couta[i] '; coutendl; }返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。