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
}
}
当求余后为0的数组元素为0,-1为什么不会出错
我知道了,为0相当于没有,就不会查询