//RADIX SORT

#include<stdio.h>
#include<conio.h>
int a[20];
void radix(int n,int time)
{
int b[10][20],q,i,j,m,r,c;
for(i=0;i<10;i++)
for(j=0;j<20;j++)
b[i][j]=0;
j=0;
for(m=0;m<n;m++)
{
switch(time)
{
case 1:
r=a[m]%10;
break;
case 2:
printf("\na[m] %d",a[m]);
q=a[m]/10;
r=q%10;
printf("\nr %d",r);
break;
case 3:
q=a[m]/100;
r=q%10;
break;
case 4:
r=a[m]/1000;
break;
}
c=1;
j=0;
switch(r)
{
case 0:
while(c)
{
if(b[0][j]==0)
{
b[0][j]=a[m];
c=0;
}
else
j++;
}
break;
case 1:
while(c)
{
if(b[1][j]==0)
{
b[1][j]=a[m];
c=0;
}
else
j++;
}
break;

case 2:
while(c)
{
if(b[2][j]==0)
{
b[2][j]=a[m];
c=0;
}
else
j++;
}
break;
case 3:
while(c)
{
if(b[3][j]==0)
{
b[3][j]=a[m];
c=0;
}
else
j++;
}
break;
case 4:
while(c)
{
if(b[4][j]==0)
{
b[4][j]=a[m];
c=0;
}
else
j++;
}
break;
case 5:
while(c)
{
if(b[5][j]==0)
{
b[5][j]=a[m];
c=0;
}
else
j++;
}
break;
case 6:
while(c)
{
if(b[6][j]==0)
{
b[6][j]=a[m];
c=0;
}
else
j++;
}
break;

case 7:
while(c)
{
if(b[7][j]==0)
{
b[7][j]=a[m];
c=0;
}
else
j++;
}
break;
case 8:
while(c)
{
if(b[8][j]==0)
{
b[8][j]=a[m];
c=0;
}
else
j++;
}
break;
case 9:
while(c)
{
if(b[9][j]==0)
{
b[9][j]=a[m];
c=0;
}
else
j++;
}
break;
}
}
m=0;
for(i=0;i<10;i++)
{
for(j=0;j<n;j++)
{
if(b[i][j])
{
a[m]=b[i][j];
m++;
}
}
}
/*printf("\nThe sorted array: ");
for(i=0;i<n;i++)
printf("%d \t",a[i]);*/
}
void main()
{
int i,n,c,max,times,j;
clrscr();
printf("\nEnter the size of the array: ");

scanf("%d",&n);
printf("\nEnter the elements: ");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<n;i++)
if(max<a[i])
max=a[i];
times=0;
c=max;
while(c)
{
if(c%10)
{
times++;
c=c/10;
}
}
for(j=1;j<=times;j++)
radix(n,j);
printf("\nThe sorted array: ");
for(i=0;i<n;i++)
printf("%d \t",a[i]);
getch();
}

Sign up to vote on this title
UsefulNot useful