Program to Move zeros to end of integer array in java (example)

  • Given an array containing integers (+ve, -ve & 0), we would like to move zeros to end of array.
  • We will iterate through the array & we will move zeros to end of array.
  • We have discussed similar problems:
    • Segregate array containing even & odd numbers.
    • Dutch national flag problem or sort array containing 0, 1 & 2

1. Example – move zeros to end of array in java (example)

Example 1:

  • If input array is { 2, 0, 5, 2, 0, 3, 1 }
  • We would like to get output {2, 5, 2, 3, 1, 0, 0}

Example 2:

  • If input array is { 1, 0, 2, 3, 0, 4, 0}
  • We would like to get output {1, 2, 3, 4, 0, 0, 0}

2. Algorithm – move zeros to end of array in java (example)

  • Initialize variable nonZeros=0
    • nonZeros represents number of non zero element in an array
  • Iterate through the array ( 0 to length of array).
    • if current element is non zero i.e. inputArray[i] != 0
      • inputArray[nonZeros++] = inputArray[index];
  • At end of iteration, all non zero elements are moved to left side of array.
  • We will append zeros till the length of array.
  • Now, we have successfully move all zeros to end of array.
  • Time complexity of algorithm is O (n).

3. Program – move zeros to the end of array in java (example)

package org.learn.arrays;

import java.util.Arrays;

public class MoveZerosToEnd {

	private static void moveZeroToEnd(int[] inputArray) {

		int index = 0;
		int nonZeros = 0;
		int length = inputArray.length;
		while (index < length) {

			if (inputArray[index] != 0) {
				inputArray[nonZeros++] = inputArray[index];
			}
			index++;
		}

		while (nonZeros < length) {
			inputArray[nonZeros++] = 0;
		}
		System.out.printf("%s", Arrays.toString(inputArray));
	}

	public static void main(String[] args) {

		int arr[] = { 2, 0, 5, 2, 0, 3, 1 };
		String sArray = Arrays.toString(arr);
		System.out.printf("1. Move zeros of array %s to end :", sArray);
		moveZeroToEnd(arr);
		
		arr = new int[]{ 1, 0, 2, 3, 0, 4, 0 };
		sArray = Arrays.toString(arr);
		System.out.printf("\n2. Move zeros of array %s to end :", sArray);
		moveZeroToEnd(arr);
	}
}

4. Output – move zeros to the end of array in java (example)

1. Move zeros of array [2, 0, 5, 2, 0, 3, 1] to end :[2, 5, 2, 3, 1, 0, 0]
2. Move zeros of array [1, 0, 2, 3, 0, 4, 0] to end :[1, 2, 3, 4, 0, 0, 0]
Scroll to Top