Friday, January 9, 2015

Radix Sort in DSA


PROGRAM FOR IMPLEMENTING RADIX SORT
/*radix sort*/
# include<stdio.h>
# include<conio.h>
# include<math.h>
# define MAX 5

/*function prototypes*/
void radixsort(int NUM[MAX],int limit);
void radix(int NUM[MAX],int size,int maxdigit);

void main()
{
 int  NUM[MAX],i = 0;
 clrscr();
 puts("\n\t\t-: PROGRAM TO DEMONSTRATE RADIX SORT :-\n");
for(i = 0;i < MAX;i++)
 {
  printf("\t\tENTER NUMBER [%d] = ", i + 1);
  scanf("%d",&NUM[i]);
 }
radixsort(NUM,MAX);
puts("\n\t\tSORTED LIST IS :- ");
 printf("\t\t");
 for(i = 0;i < MAX;i++)
  printf("  %d",NUM[i]);

 getch();
}

void radixsort(int NUM[MAX], int limit)
{
    int ndigit = 0,
    maxdigit = 0;
    int val = 0, i = 0;

  for(i = 0; i < limit; i++)
  {
   val = NUM[i];
   while(val != 0)
   {
    val = val / 10;
    ndigit = ndigit + 1;
   }
   if(ndigit > maxdigit)
    maxdigit = ndigit;
   ndigit = 0;
  }

  radix(NUM, limit, maxdigit);
 return ;
}

void radix(int NUM[MAX],int size, int maxdigit)
{
int div = 0,i = 0,j = 0,radix_i = 0,radix_j = 0,temp = 0,digit = 1;

 while(digit <= maxdigit)
 {
  div = pow10(digit);
  for(i = 0; i < size - 1; i++)
  {
   for(j = i + 1; j < size ; j++)
   {
    radix_i = NUM[i] % div;
    radix_j = NUM[j] % div;
    if(radix_i > radix_j)
    {
     temp = NUM[i];
     NUM[i] = NUM[j];
     NUM[j] = temp;
    }
   }
  }
  digit = digit + 1;
 }
 return ;
}




/*output of the program*/
How many elements:
5
Enter the element of array
4
69
21
3
2
The number after selection sorting are:
2
3
4
21
69


for more codes you can Visit http://codesofprogramming.blogspot.in/

No comments:

Post a Comment