#include "sort_.h"
void print_array(int *arr, int n)
{
if(n==0){
printf("ERROR: Array length is ZERO\n");
return;
}
printf("%d", arr[0]);
for (int i=1; i<n; i++) {
printf(" %d", arr[i]);
}
printf("\n");
}
int* sort_array(int *arr, int n)
{
int max = *max_element(arr,arr+n);
int *radix = new int[n*10];
fill(radix,radix+n*10,0);
int *tmparr = new int[n];
for(int i=0;i<n;i++){
tmparr[i] = arr[i];
}
int jishu[10];
fill(jishu,jishu+10,-1);
int wei = 0;
while(max>0){
max /= 10;
wei ++;
}
for(int i=1;i<=wei;i++){
int dev = 1;
for(int j=1;j<i;j++){
dev *= 10;
}
for(int j=0;j<n;j++){
int index = arr[j]/(dev)%(10);
jishu[index]++;
radix[index*n + jishu[index]] = arr[j];
}
int ind = 0;
for(int k=0;k<10;k++){
if(jishu[k]>=0){
sort(radix + k*n,radix + k*n + jishu[k]+1);
for(int j=0;j<jishu[k]+1;j++){
arr[ind] = radix[k*n+j];
ind ++;
}
jishu[k] = -1;
}
}
fill(radix,radix+n*10,0);
}
return arr;
}