Binary Array Sorting

Easy
0/40
Average time to solve is 20m
profile
Contributed by
30 upvotes
Asked in companies
Paytm (One97 Communications Limited)OptumAthenahealth

Problem statement

A binary array is an array consisting of only 0s and 1s.

You are given a binary array "arr" of size ‘N’. Your task is to sort the given array and return this array after sorting.

Detailed explanation ( Input/output format, Notes, Images )

Input Format :

 The first line of input contains an integer ‘T’ denoting the number of test cases.

 The next ‘2*T’ lines represent the ‘T’ test cases.

 The first line of each test case contains an integer ‘N' denoting the size of the array.

 The second line of each test case contains ‘N’ space-separated integers consisting of 0s and 1s as the array elements.

Output Format :

For each test case, print ‘N’ space-separated integers representing the elements of the sorted binary array in a separate line.

Print the output of each test case in a separate line.

Note :

You do not need to print anything, it has already been taken care of. Just implement the given function.

Follow Up :

1. Can you solve this problem in a linear time and constant space? 
2. Can you solve this problem in a single traversal only?

Constraints :

1 <= T <= 50
1 <= N <= 10^4
0 <= arr[i] <= 1

Where ‘T’ is the number of test cases and ‘N’ is the size of the array.

Time Limit: 1 sec
Sample Input 1 :
2
3 
0 1 0
4
0 0 0 1
Sample Output 1 :
0 0 1
0 0 0 1
Explanation of Sample Input 1 :
Test case 1:
The sorted array is 0 0 1

Test case 2:
The array is already sorted.
Sample Input 2 :
2
1
0
2
1 0
Sample Output 2 :
0
0 1
Explanation of Sample Input 2 :
Test case 1:
The array is already sorted

Test case 2:
The sorted array is 0 1.
Hint

Count the number of zeros or ones.

Approaches (2)
Counting

 

  • Initialize an integer variable ‘countZero’:= 0,  It will store the count of zeros in the given array.
  • Iterate over the given array, if the current element is 0 then increment ‘countZero’ by 1.
  • Run a loop where ‘i’ ranges from ‘0’ to ‘n-1’.  If  ‘i’ < ‘countZero’ then place 0  at that index in the given array, otherwise place 1.
  • Return this array.

Note -: Instead of counting 0 we can also count 1 in the given array and similarly solve this problem.

Time Complexity

O(n), where ‘n’ is the size of the array.

 

We are visiting every element of the array twice at max, hence making the complexity O(n).

Space Complexity

O(1)

 

We are not using any extra space here.

Code Solution
(100% EXP penalty)
Binary Array Sorting
Full screen
Console