Beginner Topic 13 of 51 Algorithms
Counting Sort
Non-comparison sort tallying occurrences of small integer keys.
How it works
Counting sort sorts integers from a limited range without comparisons. It counts how many times each value occurs, computes prefix sums to find each value's final position and then places elements into the output array. Running time is O(n + k) where k is the range of values, and a stable version processes input in reverse order.
Where it is used
Sorting ages, grades or small codes, serving as the stable subroutine in radix sort, histogram building and sorting characters in strings and anagram checks use counting sort.
Common pitfall
If the range k is much larger than n, memory and time blow up, making it impractical. It works only for integer-like keys, and negative numbers need an offset. Forgetting stability when sorting records breaks radix sort. Allocate the count array carefully for the largest key.
Where it fits in the course
Counting Sort is topic 13 of 51 in Algorithms, rated Beginner. It follows Quick Sort. The next topic is Radix Sort.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Algorithms quiz.
- Explore the Sorting Algorithms visualizer: Bubble, selection, insertion, merge and quick sort animated.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Algorithms quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Counting Sort?
Where do people use Counting Sort?
What is the most common mistake with Counting Sort?
What should I learn before this topic?
How can I practice it?
Is Counting Sort hard to learn?
How long does it take to learn Counting Sort?
Which topics are related to Counting Sort?
What should I study after Counting Sort?
Related topics
- Quick Sort (Algorithms)
- Radix Sort (Algorithms)
- Merge Sort (Algorithms)
- Brute Force (Algorithms)
- Counting Principles (Theory & Discrete Math)