Given an array which consists of only 0, 1 and 2. Sort the array without using any sorting algo

450DSA Cracker Solution

Given an array of size N containing only 0s, 1s, and 2s; sort the array in ascending order.
Example 1:

Input: 
N = 5
arr[]= {0 2 1 2 0}
Output:
0 0 1 2 2
Explanation:
0s 1s and 2s are segregated 
into ascending order.

Example 2:

Input: 
N = 3
arr[] = {0 1 0}
Output:
0 0 1
Explanation:
0s 1s and 2s are segregated 
into ascending order.

Your Task:
You don't need to read input or print anything. Your task is to complete the function sort012() that takes an array arr and N as input parameters and sorts the array in-place.

Expected Time Complexity: O(N)
Expected Auxiliary Space: O(1)

    int c0=0,c1=0,c2=0;
    for(int i=0;i<n;i++)
    {
        if(arr[i] ==0)
            c0++;
        else if(arr[i] == 1)
            c1++;
        else if(arr[i] == 2)
            c2++;
    }
    for(int i=0;i<c0;i++)
        arr[i] =0;
    for(int i=0;i<c1;i++)
        arr[i+c0] =1;
    for(int i=0;i<c2;i++)
        arr[i+c0+c1] =2;