void RadixSort(int a[],int n){
int max=0;//求数组中的最大值
for(int i=0;i<n;i++) max=a[i]>max?a[i]:max;
for(int digit=1;max/digit>0;digit*=10){//从个位开始按位排序
int b[n];//存放一趟排序后结果的临时数组
int bucket[10]={0};//初始化10个桶
for(int i=0;i<n;i++){
bucket[a[i]/digit%10]++;//统计数据出现次数
}
for(int i=1;i<10;i++){
bucket[i]+=bucket[i-1];//调整bucket各元素的值,调整后的值就是a中元素在b中的位置
}
for(int i=n-1;i>=0;i--){//将a中的元素填充到b中(从后往前排,先入后出)
int d=a[i]/digit%10;
b[bucket[d]-1]=a[i];
bucket[d]--;
}
memcpy(a,b,n*sizeof(int));//排序好的数组b复制回a
}
}
基数排序b[bucket[d]-1]=a[i];当这位数出现次数为0时-1不会出现问题吗?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
悬赏问题
- ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
- ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?
- ¥15 部分客户订单定位有误的问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
- ¥15 Bug traq 数据包 大概什么价
- ¥15 在anaconda上pytorch和paddle paddle下载报错