Program to implement Radix Sort in C
#include<stdio.h>#include<conio.h>
typedef struct queue
{
int front,rear;
int item[10];
}q;
void enqueue(q* qp,int val)
{
(qp)->rear++;
(qp)->item[(qp)->rear]=val;
return;
}
int dequeue(q* qp)
{
int val;
val=(qp)->item[(qp)->front];
(qp)->front++;
return val;
}
int empty(q* qp)
{
if((qp)->rear<(qp)->front)
return 1;
return 0;
}
void radix(int*a,int m,int n)
{
q qu[10];
int i,j,r,d=1,k;
for(i=1;i<=m;i++)
{
for(j=0;j<10;j++)
{
qu[j].rear=-1;
qu[j].front=0;
}
for(j=0;j<n;j++)
{
r=a[j]%(d*10);
r=r/d;
enqueue(&qu[r],a[j]);
}
d*=10;
k=0;
for(j=0;j<10;j++)
{
while(empty(&qu[j])==0)
a[k++]=dequeue(&qu[j]);
}
}
return;
}
void main()
{
int a[10],i,no,max=a[0],count=0;
clrscr();
printf("\n\n Enter no of elements..");
scanf("%d",&no);
printf("\n\n Enter the elements..");
for(i=0;i<no;i++)
{
scanf("%d",&a[i]);
if(a[i]>max)
max=a[i];
}
while(max>0)
{
max=max/10;
count++;
}
radix(a,count,no);
printf("\n\n The sorted elements are..");
for(i=0;i<no;i++)
printf("%d\t",a[i]);
getch();
}
Comments
Post a Comment