Code:
#include <stdio.h>
#include <stdlib.h>
int findbig (int *, int size);
int
main ()
{
int length, big;
int *a, *c, *b;
int j, i;
printf ("Enter the length of the Array to be sorted:");
scanf ("%d", &length);
a = (int *) malloc (sizeof (int) * (length + 1));
b = (int *) malloc (sizeof (int) * (length + 1));
printf ("\n Enter the elements one by one");
for (i = 1; i <= length; i++)
scanf ("%d", &a[i]);
big = findbig (a, length);
c = (int *) malloc (sizeof (int) * (big + 1));
for (j = 0; j <= big; j++)
c[j] = 0;
for (j = 0; j <= length; j++)
b[j] = 88;
for (j = 1; j <= length; j++)
c[a[j]] = c[a[j]] + 1;
printf ("\n C Array after c[a[j]] = c[a[j]] + 1\n");
for (j = 0; j <= big; j++)
printf ("%d \t", c[j]);
printf ("\n");
for (j = 1; j <= big; j++)
c[j] = c[j] + c[j - 1];
printf ("\n C Array after c[j] = c[j] + c[j-1]\n");
for (j = 0; j <= big; j++)
printf ("%d \t", c[j]);
printf ("\n");
for (j = length; j >= 1; j--)
{
b[c[a[j]]] = a[j];
c[a[j]] = c[a[j]] - 1;
printf ("\nAfter j = %d\n ", j);
printf ("B array:");
for (i = 1; i <= length; i++)
printf ("%d \t", b[i]);
printf ("\n C Array:");
for (i = 0; i <= big; i++)
printf ("%d \t", c[i]);
printf ("\n");
}
free (a);
free (b);
free (c);
}
int findbig (int *array, int size)
{
int big, i;
big = array[1];
for (i = 2; i <= size; i++)
{
if (array[i] > big)
big = array[i];
}
return big;
}
#include <stdio.h>
#include <stdlib.h>
int findbig (int *, int size);
int
main ()
{
int length, big;
int *a, *c, *b;
int j, i;
printf ("Enter the length of the Array to be sorted:");
scanf ("%d", &length);
a = (int *) malloc (sizeof (int) * (length + 1));
b = (int *) malloc (sizeof (int) * (length + 1));
printf ("\n Enter the elements one by one");
for (i = 1; i <= length; i++)
scanf ("%d", &a[i]);
big = findbig (a, length);
c = (int *) malloc (sizeof (int) * (big + 1));
for (j = 0; j <= big; j++)
c[j] = 0;
for (j = 0; j <= length; j++)
b[j] = 88;
for (j = 1; j <= length; j++)
c[a[j]] = c[a[j]] + 1;
printf ("\n C Array after c[a[j]] = c[a[j]] + 1\n");
for (j = 0; j <= big; j++)
printf ("%d \t", c[j]);
printf ("\n");
for (j = 1; j <= big; j++)
c[j] = c[j] + c[j - 1];
printf ("\n C Array after c[j] = c[j] + c[j-1]\n");
for (j = 0; j <= big; j++)
printf ("%d \t", c[j]);
printf ("\n");
for (j = length; j >= 1; j--)
{
b[c[a[j]]] = a[j];
c[a[j]] = c[a[j]] - 1;
printf ("\nAfter j = %d\n ", j);
printf ("B array:");
for (i = 1; i <= length; i++)
printf ("%d \t", b[i]);
printf ("\n C Array:");
for (i = 0; i <= big; i++)
printf ("%d \t", c[i]);
printf ("\n");
}
free (a);
free (b);
free (c);
}
int findbig (int *array, int size)
{
int big, i;
big = array[1];
for (i = 2; i <= size; i++)
{
if (array[i] > big)
big = array[i];
}
return big;
}