Header Ads Widget

Responsive Advertisement

Count Sort


 


#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;
}

Post a Comment

0 Comments