Counting sort

Counting sort is a linear time sorting algorithm used to sort items when they belong to a fixed and finite set. Integers which lie in a fixed interval, say k1 to k2, are examples of such items.




Algorithm


COUNTING-SORT(A,B,k)

1. let C[0..k] be a new array

2. for i = 0 to k

3. 		C[i] = 0

4. for j = 1 to A.length

5. 		C[A[j]] = C[A[j]] + 1

6. // C[i] now contains the number of elements equal to i .

7. for i = 1 to k

8. 		C[i] = C[i] + C[i - 1]

9. // C[i] now contains the number of elements less than or equal to i .

10.for j = A.length downto 1

11.		B[C[A[j]]] = A[j]

12.		C[A[j]] = C[A[j]] - 1




Counting sort Implementation


#include <stdio.h>

#include <conio.h>

void Counting_sort(int [], int, int);

void main()

{

	int n,i,k=0,A[15];

	clrscr();

	printf("\n\n

	\t\t\t----------Counting Sort----------\n\n\n");

	printf("Enter the number of input : ");

	scanf("%d",&n);

	printf("\nEnter the elements to be sorted :\n");

	for (i=1;i<=n;i++)

	{

		scanf("%d",&A[i]);

		if(A[i] > k)

		{

			k = A[i];

		}

	}

	Counting_sort(A, k, n);

	getch();

}



void Counting_sort(int A[], int k, int n)

{

	int i, j;

	int B[15], C[100];

	for(i = 0; i <= k; i++)

		C[i] = 0;

	for(j =1; j <= n; j++)

		C[A[j]] = C[A[j]] + 1;

	for(i = 1; i <= k; i++)

		C[i] = C[i] + C[i-1];

	for(j = n; j >= 1; j--)

	{

		B[C[A[j]]] = A[j];

		C[A[j]] = C[A[j]] - 1;

	}

	printf("\t\t\t----Sorted Array Using Counting Sort----\n\n\n" );

	printf("\nThe Sorted array is : ");

	for(i=1;i<=n;i++)

	{

		printf("\t");

		printf("%d",B[i]);



	}

}



Output