基数排序:
基数排序是一种非比较型整型排序,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较
从低位开始比较
时间复杂度:O(N*K) K为 N个整数中最大的位数
空间复杂度:我写的为 O(N*K) 如果用链表实现 应该是 O(N)
int d[10][N];
int cnt[10];
void radixSort(int *a, int n,int maxLen){
int dig,i,j,k;
for(i=0; i<10; i++)
cnt[i] = 0;
for(i=0; i<maxLen; i++){
for(j=0; j<n; j++){
int dig = (a[j] / (int)pow(10.0, .0+i)) % 10;
d[dig][cnt[dig]++] = a[j];
}
dig = 0;
for(j=0; j<10; j++){
for(k=0; k<cnt[j]; k++){
a[dig++] = d[j][k];
}
cnt[j] = 0;
}
}
}