#include <stdio.h>
void printArr(int arr[], int size)
{
printf("The Array is : \n");
for (int i = 0; i < size; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int arrMax(int arr[], int size)
{
int max = 0;
for (int i = 0; i < size; i++)
{
if (max < arr[i])
max = arr[i];
}
return max;
}
void countShort(int arr[], int size)
{
int j, i, max;
max = arrMax(arr, size);
int count[max + 1];
for (i = 0; i < max + 1; i++)
{
count[i] = 0;
}
for (i = 0; i < size; i++)
{
count[arr[i]] = count[arr[i]] + 1;
}
i = 0; // counter for count array
j = 0; // counter for given array
while (i < max + 1)
{
if (count[i] > 0)
{
arr[j] = i;
count[i] = count[i] -1;
j++;
}
else{
i++;
}
}
}
int main()
{
int arr[] = {5, 1, 6, 2, 9, 8, 16, 2, 88, 1, 13, 21, 99};
int size = sizeof(arr) / sizeof(int);
printArr(arr, size);
countShort(arr, size);
printf("After Marge Sort ");
printArr(arr, size);
return 0;
}

0 Comments