/* RADIX SORT */
/* Author :- Mufaddal Kagda *//
#include <stdio.h>
#include<time.h>
#define MAX 10
void insq(int,int,int*);
int b[MAX][MAX];
void print(int *a)
{
int i;
printf("\n");
for (i = 0; i <MAX; i++)
printf("%d\t", a[i]);
}
void radixsort(int *a, int n)
{
int i,j,l=0,len[10],pos=0,temp=10,k,e=1;
while(l<3)
{
k=0;
for(i=0;i<10;i++)
{
len[i]=-1;
}
printf("\n");
for(i=0;i<n;i++)
{
pos=(a[i]%temp)/e;
insq(pos,a[i],len);
}
printf("\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<=len[i];j++)
{
a[k]=b[i][j];
k++;
}
}
temp=temp*10;
e=e*10;
l++;
}
}
void insq(int pos,int val,int *len)
{
int i,j;
len[pos]=len[pos]+1;
b[pos][len[pos]]=val;
/* printf("\n\n\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
printf("%d",b[i][j]);
printf("\n");*/
}
int main()
{
int arr[MAX];
time_t t;
int i, n;
srand(time(&t));
for (i = 0; i < MAX; i++)
arr[i]=rand()%1000;
printf("\nARRAY : ");
print(arr);
radixsort(arr,MAX);
printf("\nSORTED : ");
print(arr);
printf("\n");
getch();
return 0;
}

No comments:
Post a Comment