# Move all zeroes to end of array

Given an array of random numbers, Push all the zero’s of a given array to the end of the array. For example, if the given arrays is {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0}, it should be changed to {1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0}. The order of all other elements should be same. Expected time complexity is O(n) and extra space is O(1).

Example:

```Input :  arr[] = {1, 2, 0, 4, 3, 0, 5, 0};
Output : arr[] = {1, 2, 4, 3, 5, 0, 0};

Input : arr[]  = {1, 2, 0, 0, 0, 3, 6};
Output : arr[] = {1, 2, 3, 6, 0, 0, 0};
```

There can be many ways to solve this problem. Following is a simple and interesting way to solve this problem.
Traverse the given array ‘arr’ from left to right. While traversing, maintain count of non-zero elements in array. Let the count be ‘count’. For every non-zero element arr[i], put the element at ‘arr[count]’ and increment ‘count’. After complete traversal, all non-zero elements have already been shifted to front end and ‘count’ is set as index of first 0. Now all we need to do is that run a loop which makes all elements zero from ‘count’ till end of the array.

Below is the implementation of the above approach.

## C

 `// A C++ program to move all zeroes at the end of array ` `#include ` `using` `namespace` `std; ` ` `  `// Function which pushes all zeros to end of an array. ` `void` `pushZerosToEnd(``int` `arr[], ``int` `n) ` `{ ` `    ``int` `count = 0;  ``// Count of non-zero elements ` ` `  `    ``// Traverse the array. If element encountered is non- ` `    ``// zero, then replace the element at index 'count'  ` `    ``// with this element ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``if` `(arr[i] != 0) ` `            ``arr[count++] = arr[i]; ``// here count is  ` `                                   ``// incremented ` ` `  `    ``// Now all non-zero elements have been shifted to  ` `    ``// front and  'count' is set as index of first 0.  ` `    ``// Make all elements 0 from count to end. ` `    ``while` `(count < n) ` `        ``arr[count++] = 0; ` `} ` ` `  `// Driver program to test above function ` `int` `main() ` `{ ` `    ``int` `arr[] = {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9}; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]); ` `    ``pushZerosToEnd(arr, n); ` `    ``cout << ``"Array after pushing all zeros to end of array :n"``; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``cout << arr[i] << ``" "``; ` `    ``return` `0; ` `} `

## Java

 `/* Java program to push zeroes to back of array */` `import` `java.io.*; ` ` `  `class` `PushZero ` `{ ` `    ``// Function which pushes all zeros to end of an array. ` `    ``static` `void` `pushZerosToEnd(``int` `arr[], ``int` `n) ` `    ``{ ` `        ``int` `count = ``0``;  ``// Count of non-zero elements ` ` `  `        ``// Traverse the array. If element encountered is ` `        ``// non-zero, then replace the element at index 'count' ` `        ``// with this element ` `        ``for` `(``int` `i = ``0``; i < n; i++) ` `            ``if` `(arr[i] != ``0``) ` `                ``arr[count++] = arr[i]; ``// here count is ` `                                       ``// incremented ` ` `  `        ``// Now all non-zero elements have been shifted to ` `        ``// front and 'count' is set as index of first 0. ` `        ``// Make all elements 0 from count to end. ` `        ``while` `(count < n) ` `            ``arr[count++] = ``0``; ` `    ``} ` ` `  `    ``/*Driver function to check for above functions*/` `    ``public` `static` `void` `main (String[] args) ` `    ``{ ` `        ``int` `arr[] = {``1``, ``9``, ``8``, ``4``, ``0``, ``0``, ``2``, ``7``, ``0``, ``6``, ``0``, ``9``}; ` `        ``int` `n = arr.length; ` `        ``pushZerosToEnd(arr, n); ` `        ``System.out.println(``"Array after pushing zeros to the back: "``); ` `        ``for` `(``int` `i=``0``; i

## Python3

 `# Python3 code to move all zeroes ` `# at the end of array ` ` `  `# Function which pushes all ` `# zeros to end of an array. ` `def` `pushZerosToEnd(arr, n): ` `    ``count ``=` `0` `# Count of non-zero elements ` `     `  `    ``# Traverse the array. If element  ` `    ``# encountered is non-zero, then ` `    ``# replace the element at index ` `    ``# 'count' with this element ` `    ``for` `i ``in` `range``(n): ` `        ``if` `arr[i] !``=` `0``: ` `             `  `            ``# here count is incremented ` `            ``arr[count] ``=` `arr[i] ` `            ``count``+``=``1` `     `  `    ``# Now all non-zero elements have been ` `    ``# shifted to front and 'count' is set ` `    ``# as index of first 0. Make all  ` `    ``# elements 0 from count to end. ` `    ``while` `count < n: ` `        ``arr[count] ``=` `0` `        ``count ``+``=` `1` `         `  `# Driver code ` `arr ``=` `[``1``, ``9``, ``8``, ``4``, ``0``, ``0``, ``2``, ``7``, ``0``, ``6``, ``0``, ``9``] ` `n ``=` `len``(arr) ` `pushZerosToEnd(arr, n) ` `print``(``"Array after pushing all zeros to end of array:"``) ` `print``(arr) ` ` `  `# This code is contributed by "Abhishek Sharma 44" `

## C#

 `/* C# program to push zeroes to back of array */` `using` `System; ` ` `  `class` `PushZero ` `{ ` `    ``// Function which pushes all zeros  ` `    ``// to end of an array. ` `    ``static` `void` `pushZerosToEnd(``int` `[]arr, ``int` `n) ` `    ``{ ` `        ``// Count of non-zero elements ` `        ``int` `count = 0;  ` `         `  `        ``// Traverse the array. If element encountered is ` `        ``// non-zero, then replace the element  ` `        ``// at index â..countâ.. with this element ` `        ``for` `(``int` `i = 0; i < n; i++) ` `        ``if` `(arr[i] != 0) ` `         `  `        ``// here count is incremented ` `        ``arr[count++] = arr[i];  ` `         `  `        ``// Now all non-zero elements have been shifted to ` `        ``// front and â..countâ.. is set as index of first 0. ` `        ``// Make all elements 0 from count to end. ` `        ``while` `(count < n) ` `        ``arr[count++] = 0; ` `    ``} ` `     `  `    ``// Driver function  ` `    ``public` `static` `void` `Main () ` `    ``{ ` `        ``int` `[]arr = {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9}; ` `        ``int` `n = arr.Length; ` `        ``pushZerosToEnd(arr, n); ` `        ``Console.WriteLine(``"Array after pushing all zeros to the back: "``); ` `        ``for` `(``int` `i = 0; i < n; i++) ` `        ``Console.Write(arr[i] +``" "``); ` `    ``} ` `} ` `/* This code is contributed by Anant Agrawal */`

## PHP

 ` `

Output:

```Array after pushing all zeros to end of array :
1 9 8 4 2 7 6 9 0 0 0 0```

Time Complexity: O(n) where n is number of elements in input array.

Auxiliary Space: O(1)