Separate 0s and 1s in an array

Problem :

Given an array of 0’s and 1’s in random order , you need to separate 0’s and 1’s in an array.
For example:

Solution :

Solution 1:

  • Count number of 0’s in the array. Lets say we get X 0’s
  • Once we get the count, put X 0’s in the array and put (n-X) 1’s in the latter part of array.
Java code:
Time Complexity : O(N)

Solution 2:

Algorithm: 

Lets say array is arr[]

  • Initialise two index variable , left=0 and right=arr.length-1
  • Increment left variable until you get 1’s.
  • Decrement right variable until you get 0’s
  • If left < right, swap arr[left] and arr[right]
  • In the end, you will see that you have 0’s on left side and 1’s on right side.

Java code:

Java code to separate odd and even numbers in an array :

when you run above program, you will get below output:

Was this post helpful?

Comments

  1. package com.learn.dec.array;

    public class SeperateZeroOnes {

    public static void main(String[] args) {
    int arr[]={0,1,0,0,1,1,1,0,1};

    System.out.println(“Original Array: “);
    for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i]+" ");
    }

    int l = 0 , r = arr.length – 1;

    while (l arr[r]){

    int temp = arr[l] ;
    arr[l] = arr[r];
    arr[r] = temp;
    }
    l++;
    r–;

    }
    System.out.println(“\nSorted Array: “);
    for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i]+" ");
    }

    }

    }

Leave a Reply

Your email address will not be published. Required fields are marked *