Wednesday, July 3, 2013

Counting sort

This function use counting sort.
To work with it send parameter as (array_name,size_of_array,number_range). where number range is the highest possible value in the given data array.

void counting_sort(int arr[], int sz,int range)
{
    int i,j;
    int tmp[100];

    memset(tmp,0,sizeof(tmp));

    for(i=0;i<sz;i++)
        tmp[arr[i]]++;

    for(i=0,j=0;i<range;i++)
    {
        while(tmp[i]>0)
        {
            arr[j++]=i;
            tmp[i]--;
        }
    }
}

This code will only work for numbers>1. To include 0 or negative number, the function can be slightly modified. 

No comments:

Post a Comment