#include<stdio.h> void radixsort(int arr[], int n); int main() { int arr[100],num,i; printf("How many elements do you want to Enter for radix sort: "); scanf("%d",&num); printf("\n Enter the elements for radix sort: \n"); for(i = 0 ; i < num ; i++ ) { scanf("%d",&arr[i]); } printf("\n Before Implementing Radix Sort:"); for(i = 0; i < num; i++) { printf("%d\t", arr[i]); } printf("\n"); radixsort(arr,num); printf("\n Array Elements After Implementing Radix Sort: "); for(i = 0; i < num; i++) { printf("%d\t", arr[i]); } printf("\n"); } void radixsort(int array[], int n) { int bucket1[10][5],bucket2[10],b[10]; int i,j,k,l,num,div,largest,pass; div=1; num=0; largest=array[0]; for(i=0 ; i < n ; i++) { if(array[i] > largest) { largest = array[i]; } while(largest > 0) { num++; largest = largest/10; } for(pass=0 ; pass < num ; pass++) { for(k=0 ; k < 10 ; k++) { bucket2[k] = 0; } for(i=0 ; i < n ;i++) { l = ((array[i]/div)%10); bucket1[l][bucket2[l]++] = array[i]; } i=0; for(k=0 ; k< 10 ; k++) { for(j=0 ; j < bucket2[k] ; j++) { array[i++] = bucket1[k][j]; } } div*=10; } } }
Output:-
