Step-by-Step Guide to Counting Sort: Solving the Sort Colors Problem
Counting Sort Explained - Easy Steps to Sort Colors Effectively

Sort Colors (LeetCode Problem #75). The challenge requires us to sort an array of integers representing the colors red, white, and blue. Red is represented by 0, white by 1, and blue by 2.
Problem Statement
We are given an array nums where each element represents one of three colors: 0 for red, 1 for white, and 2 for blue. The task is to sort the array in-place so that all colors are grouped together in the order: red, white, and blue. We must solve this problem without using any library's sort function.
Example 1:
Input:
nums = [2, 0, 2, 1, 1, 0]Output:
[0, 0, 1, 1, 2, 2]
Example 2:
Input:
nums = [2, 0, 1]Output:
[0, 1, 2]
function sortColors(nums: number[]): void {
const count: number[] = [0, 0, 0];
for (let i = 0; i < nums.length; i++) {
count[nums[i]]++;
}
let i = 0; // index for nums array
for (let color = 0; color < count.length; color++) {
for (let j = 0; j < count[color]; j++) {
nums[i] = color;
i++;
}
}
};
Explanation
Step 1: We initialize an array
countof size 3 to hold the count of each color.Step 2: We iterate through the
numsarray and increment the respective color counts in thecountarray.Step 3: After counting, we iterate through the
countarray. For each color, we fillnumswith the corresponding number of occurrences of that color.
Time and Space Complexity
Time Complexity:
The time complexity of this algorithm is O(n), wherenis the number of elements in the array.The first loop runs through the
numsarray to count the occurrences of each color, which takes O(n).The second loop runs through the
countarray to overwritenums, which also takes O(n).
Thus, the overall time complexity is O(n + n) = O(n).
- Space Complexity:
The space complexity is O(1) (constant space) because we are only using a fixed-size arraycountof length 3, regardless of the input size.
Why Is This Algorithm Unstable?
An algorithm is considered unstable if it does not preserve the relative order of equal elements.
In our solution, nums contains multiple instances of 0, 1, and 2, and after sorting, their original relative order is not guaranteed to be preserved. For example, if the original array is [2, 0, 1], the result will be [0, 1, 2]. While this is correct in terms of sorting, the relative positions of the original 1 and 2 are not preserved, making the algorithm unstable.
Comment if I have committed any mistake. Let's connect on my socials. I am always open for new opportunities , if I am free :P




