Counting sort algorithm is a sorting algorithm which do not involve comparison between elements of an array. In this tutorial I am sharing counting sort program in C. Steps that I am doing to sort the elements are given below.

1. First of all I am reading n elements in array a[]. While reading the array elements I have also calculated the maximum element.

2. Now the actual sorting is done in counting_sort() function. Here I am counting the occurrence of each element in the array a[] and then storing it at the index equal to the value of that element. For example occurrence of element 5 will be stored at index 5, occurrence of element 9 will be stored at index 9 and so on.

3. As the value at each index in count[] array is the occurrence of that index or element, so the elements are printed in ascending order by printing each index number of times equal to its corresponding value.

**Also Read: Merge Sort in C**

Counting Sort Example – Image Source |

I have also added a video tutorial below that will help you to understand the counting sort algorithm easily. If you are facing any problem then ask it in the comment section.

## Program for Counting Sort in C

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#include<stdio.h> void counting_sort(int a[],int n,int max) { int count[50]={0},i,j; for(i=0;i<n;++i) count[a[i]]=count[a[i]]+1; printf("\nSorted elements are:"); for(i=0;i<=max;++i) for(j=1;j<=count[i];++j) printf("%d ",i); } int main() { int a[50],n,i,max=0; printf("Enter number of elements:"); scanf("%d",&n); printf("\nEnter elements:"); for(i=0;i<n;++i) { scanf("%d",&a[i]); if(a[i]>max) max=a[i]; } counting_sort(a,n,max); return 0; } |

**Output**

AlexandraHei! Thanks for the code! It was very useful for me 🙂 I really appreciate that it is clean and very easy to understand.

though, I found a verry, verry little mistake here and i thought you might want to correct it 😀

printf(“nEnter elements:”); needs a “\”

Thanks again and good luck with what you are doing here 🙂

jozkofinally working one

chanThanks for the post.

However, I wonder this approach gives a ‘Stable sorting’, which is a characteristic of Counting Sort, as it does not actually sort by keys + pointers to records, does it?

archuGive me a simple example for counting problems in c

zeeshan ul islambro this is very very neat.

used it successfully.

kanithwhat does the statement count[a[i]]=count[a[i]]+1; mean?

Steffi BunnyYour tutorials are very lucid and interesting. Keep it up!

Rizaviathe program is not working when all the numbers are two or more digits…. 🙁

Hasan Shahriar Bonigood program. but it is not working for the number 50 and above. this can be solved by increasing the value of the count array..

Abhishek RanaThis is not counting sort. Because it does not have complexity (n).

shoutninekeep it up ! really helped me 🙂

Shubham JainWhere are you modifying or copying the value to original array?