VOOZH about

URL: https://www.geeksforgeeks.org/dsa/minimum-swaps-required-sort-binary-array/

⇱ Minimum adjacent swaps required to Sort Binary array - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Minimum adjacent swaps required to Sort Binary array

Last Updated : 29 Apr, 2025

Given a binary array, the task is to find the minimum number of swaps needed to sort this binary array. We are allowed to swap only adjacent elements.

Examples:

Input : arr[] = [0, 0, 1, 0, 1, 0, 1, 1]
Output : 3
Explanation:
1st swap : [0, 0, 1, 0, 0, 1, 1, 1]
2nd swap : [0, 0, 0, 1, 0, 1, 1, 1]
3rd swap : [0, 0, 0, 0, 1, 1, 1, 1]

Input : arr[]= [0, 0, 0, 1, 1]
Output : 0
Explanation: Array is already sorted.

Approach:

Since a sorted binary array would have all 0s followed by all 1s, we can process the array from right to left and calculate how many positions each 1 needs to travel through to reach its correct position. The count of positions for a 1 would be equal to number of zeros on right side of it.

Step by step approach:

  1. Start traversing the array from the end:
  2. If 0 is found, increment the zero count.
  3. When a 1 is found, it must move past all zeros to its right. So, add the count of zeros to the total swaps for each 1 encountered.

Illustration:

Taking example of arr[] = [0, 0, 1, 0, 1, 0, 1, 1]:

  1. Position 7: Element is 1, zero count = 0, swaps = 0
  2. Position 6: Element is 1, zero count = 0, swaps = 0
  3. Position 5: Element is 0, zero count = 1, swaps = 0
  4. Position 4: Element is 1, zero count = 1, swaps = 1
  5. Position 3: Element is 0, zero count = 2, swaps = 1
  6. Position 2: Element is 1, zero count = 2, swaps = 3
  7. Position 1: Element is 0, zero count = 3, swaps = 3
  8. Position 0: Element is 0, zero count = 4, swaps = 3 + 0 = 3

Output
3

Time Complexity: O(n) 
Auxiliary Space: O(1)

Now try the below question yourself

What would be the count when we can swap any 0 with any 1?

Comment
Article Tags: