RADIX SORT IN C

#include<stdio.h>
int no_of_passes(int arr[],int size){
int pass=0,i,large=arr[0];
for(i=0;i<size;i++){
if(large<arr[i])
large=arr[i];
}
while(large>0){
pass++;
large/=10;
}
return pass;
}
void radix_sort(int arr[],int size){

int bucket[size][10],bucket_count[10];
int nop,n,rem,div=1,i,j,k;
nop=no_of_passes(arr,size);
for(n=0;n<nop;n++){
for(i=0;i<10;i++){
bucket_count[i]=0;
}
for(i=0;i<size;i++){
rem=(arr[i]/div)%10;
bucket[rem][bucket_count[rem]]=arr[i];
bucket_count[rem]++;
}
i=0;
for(k=0;k<10;k++){
for(j=0;j<bucket_count[k];j++){
arr[i]=bucket[k][j];
i++;
}
}
div*=10;
}
}
int main(){
 int i,n;
 printf("Enter size of array:\n");
 scanf("%d",&n);
 int list[n];
 printf("Enter list of elements:\n");
 for(i=0;i<n;i++)
 scanf("%d",&list[i]);

radix_sort(list,n);

 printf("The sorted list is :\n");
 for(i=0;i<n;i++)
 printf("%d\n",list[i]);
 return 0;
}

Comments