Skip to main content

Move all zero to middle of array

Here given code implementation process.

// C Program 
// Move all zero to middle of array
#include <stdio.h>

//Display elements of given array
void printArray(int arr[], int size)
{
	for (int i = 0; i < size; ++i)
	{
		printf("  %d", arr[i]);
	}
	printf("\n");
}
// Swap the elements of array by given location
void swapElement(int arr[], int front, int tail)
{
	int temp = arr[front];
	arr[front] = arr[tail];
	arr[tail] = temp;
}
// Move all zero elements to middle of array
void moveZero(int arr[], int size)
{
	int left = 0;
	int right = size - 1;
	int flag = 0;
	int i = 1;
	while (left < right && i < right)
	{
		if (arr[left] != 0 && arr[right] != 0)
		{
			// Best case when boundary element is not zero
			left++;
			right--;
			i++;
		}
		else if (arr[i] != 0)
		{
			if (flag == 0 && arr[left] == 0)
			{
				// When need to change the left boundary element  
				swapElement(arr, i, left);
				left++;
				flag = 1;
				i++;
			}
			else if (flag == 1 && arr[right] == 0)
			{
				// When need to change the right boundary element  
				swapElement(arr, i, right);
				right--;
				flag = 0;
				i++;
			}
			else
			{
				// When top two case fail means we need to change its sequence
				swapElement(arr, left, right);
			}
		}
		else
		{
			i++;
		}
	}
}
int main(int argc, char
	const *argv[])
{
	// Define array of integer elements
	int arr1[] = {
		0 , 0 , 0 , 0 , 3 , 1 , 0 , 5 , 0 , 0 , 1 , 0
	};
	int arr2[] = {
		0 , 2 , 3 , 0 , 3 , 0 , 1
	};
	int arr3[] = {
		1 , 2 , 5 , 3 , 4 , 0 , 4
	};
	int arr4[] = {
		0 , 0 , 4 , 0 , 0 , 9
	};
	int arr5[] = {
		0 , 0 , 4 , 0 , 0
	};
	// Test case 1
	int size = sizeof(arr1) / sizeof(arr1[0]);
	printf("  Array Element \n");
	printArray(arr1, size);
	moveZero(arr1, size);
	printf("  After move zero elements at middle  \n");
	printArray(arr1, size);
	// Test case 2
	size = sizeof(arr2) / sizeof(arr2[0]);
	printf("\n  Array Element \n");
	printArray(arr2, size);
	moveZero(arr2, size);
	printf("  After move zero elements at middle  \n");
	printArray(arr2, size);
	// Test case 3
	size = sizeof(arr3) / sizeof(arr3[0]);
	printf("\n  Array Element \n");
	printArray(arr3, size);
	moveZero(arr3, size);
	printf("  After move zero elements at middle  \n");
	printArray(arr3, size);
	// Test case 4
	size = sizeof(arr4) / sizeof(arr4[0]);
	printf("\n  Array Element \n");
	printArray(arr4, size);
	moveZero(arr4, size);
	printf("  After move zero elements at middle  \n");
	printArray(arr4, size);
	// Test case 4
	size = sizeof(arr5) / sizeof(arr5[0]);
	printf("\n  Array Element \n");
	printArray(arr5, size);
	moveZero(arr5, size);
	printf("  After move zero elements at middle  \n");
	printArray(arr5, size);
	return 0;
}

Output

  Array Element
  0  0  0  0  3  1  0  5  0  0  1  0
  After move zero elements at middle
  3  5  0  0  0  0  0  0  0  0  1  1

  Array Element
  0  2  3  0  3  0  1
  After move zero elements at middle
  2  3  0  0  0  1  3

  Array Element
  1  2  5  3  4  0  4
  After move zero elements at middle
  1  5  2  0  4  3  4

  Array Element
  0  0  4  0  0  9
  After move zero elements at middle
  4  0  0  0  0  9

  Array Element
  0  0  4  0  0
  After move zero elements at middle
  4  0  0  0  0
/*
    Java Program
    Move all zero to middle of array
*/
public class MoveElement
{
	//Display elements of given array
	public void printArray(int[] arr, int size)
	{
		for (int i = 0; i < size; ++i)
		{
			System.out.print("  " + arr[i]);
		}
		System.out.print("\n");
	}
	// Swap the elements of array by given location
	public void swapElement(int[] arr, int front, int tail)
	{
		int temp = arr[front];
		arr[front] = arr[tail];
		arr[tail] = temp;
	}
	// Move all zero elements to middle of array
	public void moveZero(int[] arr, int size)
	{
		int left = 0;
		int right = size - 1;
		int flag = 0;
		int i = 1;
		while (left < right && i < right)
		{
			if (arr[left] != 0 && arr[right] != 0)
			{
				// Best case when boundary element is not zero
				left++;
				right--;
				i++;
			}
			else if (arr[i] != 0)
			{
				if (flag == 0 && arr[left] == 0)
				{
					// When need to change the left boundary element  
					swapElement(arr, i, left);
					left++;
					flag = 1;
					i++;
				}
				else if (flag == 1 && arr[right] == 0)
				{
					// When need to change the right boundary element  
					swapElement(arr, i, right);
					right--;
					flag = 0;
					i++;
				}
				else
				{
					// When top two case fail means we need to change its sequence
					swapElement(arr, left, right);
				}
			}
			else
			{
				i++;
			}
		}
	}
	public static void main(String[] args)
	{
		MoveElement task = new MoveElement();
		// Define array of integer elements
		int[] arr1 = {
			0 , 0 , 0 , 0 , 3 , 1 , 0 , 5 , 0 , 0 , 1 , 0
		};
		int[] arr2 = {
			0 , 2 , 3 , 0 , 3 , 0 , 1
		};
		int[] arr3 = {
			1 , 2 , 5 , 3 , 4 , 0 , 4
		};
		int[] arr4 = {
			0 , 0 , 4 , 0 , 0 , 9
		};
		int[] arr5 = {
			0 , 0 , 4 , 0 , 0
		};
		// Test case 1
		int size = arr1.length;
		System.out.print(" Array Element \n");
		task.printArray(arr1, size);
		task.moveZero(arr1, size);
		System.out.print(" After move zero elements at middle \n");
		task.printArray(arr1, size);
		// Test case 2
		size = arr2.length;
		System.out.print("\n Array Element \n");
		task.printArray(arr2, size);
		task.moveZero(arr2, size);
		System.out.print(" After move zero elements at middle \n");
		task.printArray(arr2, size);
		// Test case 3
		size = arr3.length;;
		System.out.print("\n Array Element \n");
		task.printArray(arr3, size);
		task.moveZero(arr3, size);
		System.out.print(" After move zero elements at middle \n");
		task.printArray(arr3, size);
		// Test case 4
		size = arr4.length;;
		System.out.print("\n Array Element \n");
		task.printArray(arr4, size);
		task.moveZero(arr4, size);
		System.out.print(" After move zero elements at middle \n");
		task.printArray(arr4, size);
		// Test case 4
		size = arr5.length;;
		System.out.print("\n Array Element \n");
		task.printArray(arr5, size);
		task.moveZero(arr5, size);
		System.out.print(" After move zero elements at middle \n");
		task.printArray(arr5, size);
	}
}

Output

 Array Element
  0  0  0  0  3  1  0  5  0  0  1  0
 After move zero elements at middle
  3  5  0  0  0  0  0  0  0  0  1  1

 Array Element
  0  2  3  0  3  0  1
 After move zero elements at middle
  2  3  0  0  0  1  3

 Array Element
  1  2  5  3  4  0  4
 After move zero elements at middle
  1  5  2  0  4  3  4

 Array Element
  0  0  4  0  0  9
 After move zero elements at middle
  4  0  0  0  0  9

 Array Element
  0  0  4  0  0
 After move zero elements at middle
  4  0  0  0  0
// Include header file
#include <iostream>

using namespace std;
/*
    C++ Program
    Move all zero to middle of array
*/
class MoveElement
{
	public:
		//Display elements of given array
		void printArray(int arr[], int size)
		{
			for (int i = 0; i < size; ++i)
			{
				cout << "  " << arr[i];
			}
			cout << "\n";
		}
	// Swap the elements of array by given location
	void swapElement(int arr[], int front, int tail)
	{
		int temp = arr[front];
		arr[front] = arr[tail];
		arr[tail] = temp;
	}
	// Move all zero elements to middle of array
	void moveZero(int arr[], int size)
	{
		int left = 0;
		int right = size - 1;
		int flag = 0;
		int i = 1;
		while (left < right && i < right)
		{
			if (arr[left] != 0 && arr[right] != 0)
			{
				// Best case when boundary element is not zero
				left++;
				right--;
				i++;
			}
			else if (arr[i] != 0)
			{
				if (flag == 0 && arr[left] == 0)
				{
					// When need to change the left boundary element
					this->swapElement(arr, i, left);
					left++;
					flag = 1;
					i++;
				}
				else if (flag == 1 && arr[right] == 0)
				{
					// When need to change the right boundary element
					this->swapElement(arr, i, right);
					right--;
					flag = 0;
					i++;
				}
				else
				{
					// When top two case fail means we need to change its sequence
					this->swapElement(arr, left, right);
				}
			}
			else
			{
				i++;
			}
		}
	}
};
int main()
{
	MoveElement task = MoveElement();
	// Define array of integer elements
	int arr1[] = {
		0 , 0 , 0 , 0 , 3 , 1 , 0 , 5 , 0 , 0 , 1 , 0
	};
	int arr2[] = {
		0 , 2 , 3 , 0 , 3 , 0 , 1
	};
	int arr3[] = {
		1 , 2 , 5 , 3 , 4 , 0 , 4
	};
	int arr4[] = {
		0 , 0 , 4 , 0 , 0 , 9
	};
	int arr5[] = {
		0 , 0 , 4 , 0 , 0
	};
	// Test case 1
	int size = sizeof(arr1) / sizeof(arr1[0]);
	cout << " Array Element \n";
	task.printArray(arr1, size);
	task.moveZero(arr1, size);
	cout << " After move zero elements at middle \n";
	task.printArray(arr1, size);
	// Test case 2
	size = sizeof(arr2) / sizeof(arr2[0]);
	cout << "\n Array Element \n";
	task.printArray(arr2, size);
	task.moveZero(arr2, size);
	cout << " After move zero elements at middle \n";
	task.printArray(arr2, size);
	// Test case 3
	size = sizeof(arr3) / sizeof(arr3[0]);;
	cout << "\n Array Element \n";
	task.printArray(arr3, size);
	task.moveZero(arr3, size);
	cout << " After move zero elements at middle \n";
	task.printArray(arr3, size);
	// Test case 4
	size = sizeof(arr4) / sizeof(arr4[0]);;
	cout << "\n Array Element \n";
	task.printArray(arr4, size);
	task.moveZero(arr4, size);
	cout << " After move zero elements at middle \n";
	task.printArray(arr4, size);
	// Test case 4
	size = sizeof(arr5) / sizeof(arr5[0]);;
	cout << "\n Array Element \n";
	task.printArray(arr5, size);
	task.moveZero(arr5, size);
	cout << " After move zero elements at middle \n";
	task.printArray(arr5, size);
	return 0;
}

Output

 Array Element
  0  0  0  0  3  1  0  5  0  0  1  0
 After move zero elements at middle
  3  5  0  0  0  0  0  0  0  0  1  1

 Array Element
  0  2  3  0  3  0  1
 After move zero elements at middle
  2  3  0  0  0  1  3

 Array Element
  1  2  5  3  4  0  4
 After move zero elements at middle
  1  5  2  0  4  3  4

 Array Element
  0  0  4  0  0  9
 After move zero elements at middle
  4  0  0  0  0  9

 Array Element
  0  0  4  0  0
 After move zero elements at middle
  4  0  0  0  0
// Include namespace system
using System;
/*
    C# Program
    Move all zero to middle of array
*/
public class MoveElement
{
	//Display elements of given array
	public void printArray(int[] arr, int size)
	{
		for (int i = 0; i < size; ++i)
		{
			Console.Write("  " + arr[i]);
		}
		Console.Write("\n");
	}
	// Swap the elements of array by given location
	public void swapElement(int[] arr, int front, int tail)
	{
		int temp = arr[front];
		arr[front] = arr[tail];
		arr[tail] = temp;
	}
	// Move all zero elements to middle of array
	public void moveZero(int[] arr, int size)
	{
		int left = 0;
		int right = size - 1;
		int flag = 0;
		int i = 1;
		while (left < right && i < right)
		{
			if (arr[left] != 0 && arr[right] != 0)
			{
				// Best case when boundary element is not zero
				left++;
				right--;
				i++;
			}
			else if (arr[i] != 0)
			{
				if (flag == 0 && arr[left] == 0)
				{
					// When need to change the left boundary element
					swapElement(arr, i, left);
					left++;
					flag = 1;
					i++;
				}
				else if (flag == 1 && arr[right] == 0)
				{
					// When need to change the right boundary element
					swapElement(arr, i, right);
					right--;
					flag = 0;
					i++;
				}
				else
				{
					// When top two case fail means we need to change its sequence
					swapElement(arr, left, right);
				}
			}
			else
			{
				i++;
			}
		}
	}
	public static void Main(String[] args)
	{
		MoveElement task = new MoveElement();
		// Define array of integer elements
		int[] arr1 = {
			0 , 0 , 0 , 0 , 3 , 1 , 0 , 5 , 0 , 0 , 1 , 0
		};
		int[] arr2 = {
			0 , 2 , 3 , 0 , 3 , 0 , 1
		};
		int[] arr3 = {
			1 , 2 , 5 , 3 , 4 , 0 , 4
		};
		int[] arr4 = {
			0 , 0 , 4 , 0 , 0 , 9
		};
		int[] arr5 = {
			0 , 0 , 4 , 0 , 0
		};
		// Test case 1
		int size = arr1.Length;
		Console.Write(" Array Element \n");
		task.printArray(arr1, size);
		task.moveZero(arr1, size);
		Console.Write(" After move zero elements at middle \n");
		task.printArray(arr1, size);
		// Test case 2
		size = arr2.Length;
		Console.Write("\n Array Element \n");
		task.printArray(arr2, size);
		task.moveZero(arr2, size);
		Console.Write(" After move zero elements at middle \n");
		task.printArray(arr2, size);
		// Test case 3
		size = arr3.Length;;
		Console.Write("\n Array Element \n");
		task.printArray(arr3, size);
		task.moveZero(arr3, size);
		Console.Write(" After move zero elements at middle \n");
		task.printArray(arr3, size);
		// Test case 4
		size = arr4.Length;;
		Console.Write("\n Array Element \n");
		task.printArray(arr4, size);
		task.moveZero(arr4, size);
		Console.Write(" After move zero elements at middle \n");
		task.printArray(arr4, size);
		// Test case 4
		size = arr5.Length;;
		Console.Write("\n Array Element \n");
		task.printArray(arr5, size);
		task.moveZero(arr5, size);
		Console.Write(" After move zero elements at middle \n");
		task.printArray(arr5, size);
	}
}

Output

 Array Element
  0  0  0  0  3  1  0  5  0  0  1  0
 After move zero elements at middle
  3  5  0  0  0  0  0  0  0  0  1  1

 Array Element
  0  2  3  0  3  0  1
 After move zero elements at middle
  2  3  0  0  0  1  3

 Array Element
  1  2  5  3  4  0  4
 After move zero elements at middle
  1  5  2  0  4  3  4

 Array Element
  0  0  4  0  0  9
 After move zero elements at middle
  4  0  0  0  0  9

 Array Element
  0  0  4  0  0
 After move zero elements at middle
  4  0  0  0  0
<?php
/*
    Php Program
    Move all zero to middle of array
*/
class MoveElement
{
	//Display elements of given array
	public	function printArray( & $arr, $size)
	{
		for ($i = 0; $i < $size; ++$i)
		{
			echo "  ". $arr[$i];
		}
		echo "\n";
	}
	// Swap the elements of array by given location
	public	function swapElement( & $arr, $front, $tail)
	{
		$temp = $arr[$front];
		$arr[$front] = $arr[$tail];
		$arr[$tail] = $temp;
	}
	// Move all zero elements to middle of array
	public	function moveZero( & $arr, $size)
	{
		$left = 0;
		$right = $size - 1;
		$flag = 0;
		$i = 1;
		while ($left < $right && $i < $right)
		{
			if ($arr[$left] != 0 && $arr[$right] != 0)
			{
				// Best case when boundary element is not zero
				$left++;
				$right--;
				$i++;
			}
			else if ($arr[$i] != 0)
			{
				if ($flag == 0 && $arr[$left] == 0)
				{
					// When need to change the left boundary element
					$this->swapElement($arr, $i, $left);
					$left++;
					$flag = 1;
					$i++;
				}
				else if ($flag == 1 && $arr[$right] == 0)
				{
					// When need to change the right boundary element
					$this->swapElement($arr, $i, $right);
					$right--;
					$flag = 0;
					$i++;
				}
				else
				{
					// When top two case fail means we need to change its sequence
					$this->swapElement($arr, $left, $right);
				}
			}
			else
			{
				$i++;
			}
		}
	}
}

function main()
{
	$task = new MoveElement();
	// Define array of integer elements
	$arr1 = array(0, 0, 0, 0, 3, 1, 0, 5, 0, 0, 1, 0);
	$arr2 = array(0, 2, 3, 0, 3, 0, 1);
	$arr3 = array(1, 2, 5, 3, 4, 0, 4);
	$arr4 = array(0, 0, 4, 0, 0, 9);
	$arr5 = array(0, 0, 4, 0, 0);
	// Test case 1
	$size = count($arr1);
	echo " Array Element \n";
	$task->printArray($arr1, $size);
	$task->moveZero($arr1, $size);
	echo " After move zero elements at middle \n";
	$task->printArray($arr1, $size);
	// Test case 2
	$size = count($arr2);
	echo "\n Array Element \n";
	$task->printArray($arr2, $size);
	$task->moveZero($arr2, $size);
	echo " After move zero elements at middle \n";
	$task->printArray($arr2, $size);
	// Test case 3
	$size = count($arr3);;
	echo "\n Array Element \n";
	$task->printArray($arr3, $size);
	$task->moveZero($arr3, $size);
	echo " After move zero elements at middle \n";
	$task->printArray($arr3, $size);
	// Test case 4
	$size = count($arr4);;
	echo "\n Array Element \n";
	$task->printArray($arr4, $size);
	$task->moveZero($arr4, $size);
	echo " After move zero elements at middle \n";
	$task->printArray($arr4, $size);
	// Test case 4
	$size = count($arr5);;
	echo "\n Array Element \n";
	$task->printArray($arr5, $size);
	$task->moveZero($arr5, $size);
	echo " After move zero elements at middle \n";
	$task->printArray($arr5, $size);
}
main();

Output

 Array Element
  0  0  0  0  3  1  0  5  0  0  1  0
 After move zero elements at middle
  3  5  0  0  0  0  0  0  0  0  1  1

 Array Element
  0  2  3  0  3  0  1
 After move zero elements at middle
  2  3  0  0  0  1  3

 Array Element
  1  2  5  3  4  0  4
 After move zero elements at middle
  1  5  2  0  4  3  4

 Array Element
  0  0  4  0  0  9
 After move zero elements at middle
  4  0  0  0  0  9

 Array Element
  0  0  4  0  0
 After move zero elements at middle
  4  0  0  0  0
/*
    Node Js Program
    Move all zero to middle of array
*/
class MoveElement
{
	//Display elements of given array
	printArray(arr, size)
	{
		for (var i = 0; i < size; ++i)
		{
			process.stdout.write("  " + arr[i]);
		}
		process.stdout.write("\n");
	}
	// Swap the elements of array by given location
	swapElement(arr, front, tail)
	{
		var temp = arr[front];
		arr[front] = arr[tail];
		arr[tail] = temp;
	}
	// Move all zero elements to middle of array
	moveZero(arr, size)
	{
		var left = 0;
		var right = size - 1;
		var flag = 0;
		var i = 1;
		while (left < right && i < right)
		{
			if (arr[left] != 0 && arr[right] != 0)
			{
				// Best case when boundary element is not zero
				left++;
				right--;
				i++;
			}
			else if (arr[i] != 0)
			{
				if (flag == 0 && arr[left] == 0)
				{
					// When need to change the left boundary element
					this.swapElement(arr, i, left);
					left++;
					flag = 1;
					i++;
				}
				else if (flag == 1 && arr[right] == 0)
				{
					// When need to change the right boundary element
					this.swapElement(arr, i, right);
					right--;
					flag = 0;
					i++;
				}
				else
				{
					// When top two case fail means we need to change its sequence
					this.swapElement(arr, left, right);
				}
			}
			else
			{
				i++;
			}
		}
	}
}

function main()
{
	var task = new MoveElement();
	// Define array of integer elements
	var arr1 = [0, 0, 0, 0, 3, 1, 0, 5, 0, 0, 1, 0];
	var arr2 = [0, 2, 3, 0, 3, 0, 1];
	var arr3 = [1, 2, 5, 3, 4, 0, 4];
	var arr4 = [0, 0, 4, 0, 0, 9];
	var arr5 = [0, 0, 4, 0, 0];
	// Test case 1
	var size = arr1.length;
	process.stdout.write(" Array Element \n");
	task.printArray(arr1, size);
	task.moveZero(arr1, size);
	process.stdout.write(" After move zero elements at middle \n");
	task.printArray(arr1, size);
	// Test case 2
	size = arr2.length;
	process.stdout.write("\n Array Element \n");
	task.printArray(arr2, size);
	task.moveZero(arr2, size);
	process.stdout.write(" After move zero elements at middle \n");
	task.printArray(arr2, size);
	// Test case 3
	size = arr3.length;;
	process.stdout.write("\n Array Element \n");
	task.printArray(arr3, size);
	task.moveZero(arr3, size);
	process.stdout.write(" After move zero elements at middle \n");
	task.printArray(arr3, size);
	// Test case 4
	size = arr4.length;;
	process.stdout.write("\n Array Element \n");
	task.printArray(arr4, size);
	task.moveZero(arr4, size);
	process.stdout.write(" After move zero elements at middle \n");
	task.printArray(arr4, size);
	// Test case 4
	size = arr5.length;;
	process.stdout.write("\n Array Element \n");
	task.printArray(arr5, size);
	task.moveZero(arr5, size);
	process.stdout.write(" After move zero elements at middle \n");
	task.printArray(arr5, size);
}
main();

Output

 Array Element
  0  0  0  0  3  1  0  5  0  0  1  0
 After move zero elements at middle
  3  5  0  0  0  0  0  0  0  0  1  1

 Array Element
  0  2  3  0  3  0  1
 After move zero elements at middle
  2  3  0  0  0  1  3

 Array Element
  1  2  5  3  4  0  4
 After move zero elements at middle
  1  5  2  0  4  3  4

 Array Element
  0  0  4  0  0  9
 After move zero elements at middle
  4  0  0  0  0  9

 Array Element
  0  0  4  0  0
 After move zero elements at middle
  4  0  0  0  0
#  Python 3 Program
#  Move all zero to middle of array

class MoveElement :
	# Display elements of given array
	def printArray(self, arr, size) :
		i = 0
		while (i < size) :
			print("  ", arr[i], end = "")
			i += 1
		
		print(end = "\n")
	
	#  Swap the elements of array by given location
	def swapElement(self, arr, front, tail) :
		temp = arr[front]
		arr[front] = arr[tail]
		arr[tail] = temp
	
	#  Move all zero elements to middle of array
	def moveZero(self, arr, size) :
		left = 0
		right = size - 1
		flag = 0
		i = 1
		while (left < right and i < right) :
			if (arr[left] != 0 and arr[right] != 0) :
				#  Best case when boundary element is not zero
				left += 1
				right -= 1
				i += 1
			
			elif(arr[i] != 0) :
				if (flag == 0 and arr[left] == 0) :
					#  When need to change the left boundary element
					self.swapElement(arr, i, left)
					left += 1
					flag = 1
					i += 1
				
				elif(flag == 1 and arr[right] == 0) :
					#  When need to change the right boundary element
					self.swapElement(arr, i, right)
					right -= 1
					flag = 0
					i += 1
				else :
					#  When top two case fail means we need to change its sequence
					self.swapElement(arr, left, right)
				
			else :
				i += 1
			
		
	

def main() :
	task = MoveElement()
	#  Define array of integer elements
	arr1 = [0, 0, 0, 0, 3, 1, 0, 5, 0, 0, 1, 0]
	arr2 = [0, 2, 3, 0, 3, 0, 1]
	arr3 = [1, 2, 5, 3, 4, 0, 4]
	arr4 = [0, 0, 4, 0, 0, 9]
	arr5 = [0, 0, 4, 0, 0]
	#  Test case 1
	size = len(arr1)
	print(" Array Element ")
	task.printArray(arr1, size)
	task.moveZero(arr1, size)
	print(" After move zero elements at middle ")
	task.printArray(arr1, size)
	#  Test case 2
	size = len(arr2)
	print("\n Array Element ")
	task.printArray(arr2, size)
	task.moveZero(arr2, size)
	print(" After move zero elements at middle ")
	task.printArray(arr2, size)
	#  Test case 3
	size = len(arr3)
	print("\n Array Element ")
	task.printArray(arr3, size)
	task.moveZero(arr3, size)
	print(" After move zero elements at middle ")
	task.printArray(arr3, size)
	#  Test case 4
	size = len(arr4)
	print("\n Array Element ")
	task.printArray(arr4, size)
	task.moveZero(arr4, size)
	print(" After move zero elements at middle ")
	task.printArray(arr4, size)
	#  Test case 4
	size = len(arr5)
	print("\n Array Element ")
	task.printArray(arr5, size)
	task.moveZero(arr5, size)
	print(" After move zero elements at middle ")
	task.printArray(arr5, size)

if __name__ == "__main__": main()

Output

 Array Element
   0   0   0   0   3   1   0   5   0   0   1   0
 After move zero elements at middle
   3   5   0   0   0   0   0   0   0   0   1   1

 Array Element
   0   2   3   0   3   0   1
 After move zero elements at middle
   2   3   0   0   0   1   3

 Array Element
   1   2   5   3   4   0   4
 After move zero elements at middle
   1   5   2   0   4   3   4

 Array Element
   0   0   4   0   0   9
 After move zero elements at middle
   4   0   0   0   0   9

 Array Element
   0   0   4   0   0
 After move zero elements at middle
   4   0   0   0   0
#  Ruby Program
#  Move all zero to middle of array

class MoveElement 
	# Display elements of given array
	def printArray(arr, size) 
		i = 0
		while (i < size) 
			print("  ", arr[i])
			i += 1
		end

		print("\n")
	end

	#  Swap the elements of array by given location
	def swapElement(arr, front, tail) 
		temp = arr[front]
		arr[front] = arr[tail]
		arr[tail] = temp
	end

	#  Move all zero elements to middle of array
	def moveZero(arr, size) 
		left = 0
		right = size - 1
		flag = 0
		i = 1
		while (left < right && i < right) 
			if (arr[left] != 0 && arr[right] != 0) 
				#  Best case when boundary element is not zero
				left += 1
				right -= 1
				i += 1
			elsif(arr[i] != 0) 
				if (flag == 0 && arr[left] == 0) 
					#  When need to change the left boundary element
					self.swapElement(arr, i, left)
					left += 1
					flag = 1
					i += 1
				elsif(flag == 1 && arr[right] == 0) 
					#  When need to change the right boundary element
					self.swapElement(arr, i, right)
					right -= 1
					flag = 0
					i += 1
				else 
					#  When top two case fail means we need to change its sequence
					self.swapElement(arr, left, right)
				end

			else 
				i += 1
			end

		end

	end

end

def main() 
	task = MoveElement.new()
	#  Define array of integer elements
	arr1 = [0, 0, 0, 0, 3, 1, 0, 5, 0, 0, 1, 0]
	arr2 = [0, 2, 3, 0, 3, 0, 1]
	arr3 = [1, 2, 5, 3, 4, 0, 4]
	arr4 = [0, 0, 4, 0, 0, 9]
	arr5 = [0, 0, 4, 0, 0]
	#  Test case 1
	size = arr1.length
	print(" Array Element \n")
	task.printArray(arr1, size)
	task.moveZero(arr1, size)
	print(" After move zero elements at middle \n")
	task.printArray(arr1, size)
	#  Test case 2
	size = arr2.length
	print("\n Array Element \n")
	task.printArray(arr2, size)
	task.moveZero(arr2, size)
	print(" After move zero elements at middle \n")
	task.printArray(arr2, size)
	#  Test case 3
	size = arr3.length
	print("\n Array Element \n")
	task.printArray(arr3, size)
	task.moveZero(arr3, size)
	print(" After move zero elements at middle \n")
	task.printArray(arr3, size)
	#  Test case 4
	size = arr4.length
	print("\n Array Element \n")
	task.printArray(arr4, size)
	task.moveZero(arr4, size)
	print(" After move zero elements at middle \n")
	task.printArray(arr4, size)
	#  Test case 4
	size = arr5.length
	print("\n Array Element \n")
	task.printArray(arr5, size)
	task.moveZero(arr5, size)
	print(" After move zero elements at middle \n")
	task.printArray(arr5, size)
end

main()

Output

 Array Element 
  0  0  0  0  3  1  0  5  0  0  1  0
 After move zero elements at middle 
  3  5  0  0  0  0  0  0  0  0  1  1

 Array Element 
  0  2  3  0  3  0  1
 After move zero elements at middle 
  2  3  0  0  0  1  3

 Array Element 
  1  2  5  3  4  0  4
 After move zero elements at middle 
  1  5  2  0  4  3  4

 Array Element 
  0  0  4  0  0  9
 After move zero elements at middle 
  4  0  0  0  0  9

 Array Element 
  0  0  4  0  0
 After move zero elements at middle 
  4  0  0  0  0
/*
    Scala Program
    Move all zero to middle of array
*/
class MoveElement
{
	//Display elements of given array
	def printArray(arr: Array[Int], size: Int): Unit = {
		var i: Int = 0;
		while (i < size)
		{
			print("  " + arr(i));
			i += 1;
		}
		print("\n");
	}
	// Swap the elements of array by given location
	def swapElement(arr: Array[Int], front: Int, tail: Int): Unit = {
		var temp: Int = arr(front);
		arr(front) = arr(tail);
		arr(tail) = temp;
	}
	// Move all zero elements to middle of array
	def moveZero(arr: Array[Int], size: Int): Unit = {
		var left: Int = 0;
		var right: Int = size - 1;
		var flag: Int = 0;
		var i: Int = 1;
		while (left < right && i < right)
		{
			if (arr(left) != 0 && arr(right) != 0)
			{
				// Best case when boundary element is not zero
				left += 1;
				right -= 1;
				i += 1;
			}
			else if (arr(i) != 0)
			{
				if (flag == 0 && arr(left) == 0)
				{
					// When need to change the left boundary element
					this.swapElement(arr, i, left);
					left += 1;
					flag = 1;
					i += 1;
				}
				else if (flag == 1 && arr(right) == 0)
				{
					// When need to change the right boundary element
					this.swapElement(arr, i, right);
					right -= 1;
					flag = 0;
					i += 1;
				}
				else
				{
					// When top two case fail means we need to change its sequence
					this.swapElement(arr, left, right);
				}
			}
			else
			{
				i += 1;
			}
		}
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: MoveElement = new MoveElement();
		// Define array of integer elements
		var arr1: Array[Int] = Array(0, 0, 0, 0, 3, 1, 0, 5, 0, 0, 1, 0);
		var arr2: Array[Int] = Array(0, 2, 3, 0, 3, 0, 1);
		var arr3: Array[Int] = Array(1, 2, 5, 3, 4, 0, 4);
		var arr4: Array[Int] = Array(0, 0, 4, 0, 0, 9);
		var arr5: Array[Int] = Array(0, 0, 4, 0, 0);
		// Test case 1
		var size: Int = arr1.length;
		print(" Array Element \n");
		task.printArray(arr1, size);
		task.moveZero(arr1, size);
		print(" After move zero elements at middle \n");
		task.printArray(arr1, size);
		// Test case 2
		size = arr2.length;
		print("\n Array Element \n");
		task.printArray(arr2, size);
		task.moveZero(arr2, size);
		print(" After move zero elements at middle \n");
		task.printArray(arr2, size);
		// Test case 3
		size = arr3.length;
		print("\n Array Element \n");
		task.printArray(arr3, size);
		task.moveZero(arr3, size);
		print(" After move zero elements at middle \n");
		task.printArray(arr3, size);
		// Test case 4
		size = arr4.length;
		print("\n Array Element \n");
		task.printArray(arr4, size);
		task.moveZero(arr4, size);
		print(" After move zero elements at middle \n");
		task.printArray(arr4, size);
		// Test case 4
		size = arr5.length;
		print("\n Array Element \n");
		task.printArray(arr5, size);
		task.moveZero(arr5, size);
		print(" After move zero elements at middle \n");
		task.printArray(arr5, size);
	}
}

Output

 Array Element
  0  0  0  0  3  1  0  5  0  0  1  0
 After move zero elements at middle
  3  5  0  0  0  0  0  0  0  0  1  1

 Array Element
  0  2  3  0  3  0  1
 After move zero elements at middle
  2  3  0  0  0  1  3

 Array Element
  1  2  5  3  4  0  4
 After move zero elements at middle
  1  5  2  0  4  3  4

 Array Element
  0  0  4  0  0  9
 After move zero elements at middle
  4  0  0  0  0  9

 Array Element
  0  0  4  0  0
 After move zero elements at middle
  4  0  0  0  0
/*
    Swift 4 Program
    Move all zero to middle of array
*/
class MoveElement
{
	//Display elements of given array
	func printArray(_ arr: [Int], _ size: Int)
	{
		var i: Int = 0;
		while (i < size)
		{
			print("  ", arr[i], terminator: "");
			i += 1;
		}
		print(terminator: "\n");
	}
	// Swap the elements of array by given location
	func swapElement(_ arr: inout[Int], _ front: Int, _ tail: Int)
	{
		let temp: Int = arr[front];
		arr[front] = arr[tail];
		arr[tail] = temp;
	}
	// Move all zero elements to middle of array
	func moveZero(_ arr: inout[Int], _ size: Int)
	{
		var left: Int = 0;
		var right: Int = size - 1;
		var flag: Int = 0;
		var i: Int = 1;
		while (left < right && i < right)
		{
			if (arr[left] != 0 && arr[right] != 0)
			{
				// Best case when boundary element is not zero
				left += 1;
				right -= 1;
				i += 1;
			}
			else if (arr[i] != 0)
			{
				if (flag == 0 && arr[left] == 0)
				{
					// When need to change the left boundary element
					self.swapElement(&arr, i, left);
					left += 1;
					flag = 1;
					i += 1;
				}
				else if (flag == 1 && arr[right] == 0)
				{
					// When need to change the right boundary element
					self.swapElement(&arr, i, right);
					right -= 1;
					flag = 0;
					i += 1;
				}
				else
				{
					// When top two case fail means we need to change its sequence
					self.swapElement(&arr, left, right);
				}
			}
			else
			{
				i += 1;
			}
		}
	}
}
func main()
{
	let task: MoveElement = MoveElement();
	// Define array of integer elements
	var arr1: [Int] = [0, 0, 0, 0, 3, 1, 0, 5, 0, 0, 1, 0];
	var arr2: [Int] = [0, 2, 3, 0, 3, 0, 1];
	var arr3: [Int] = [1, 2, 5, 3, 4, 0, 4];
	var arr4: [Int] = [0, 0, 4, 0, 0, 9];
	var arr5: [Int] = [0, 0, 4, 0, 0];
	// Test case 1
	var size: Int = arr1.count;
	print(" Array Element ");
	task.printArray(arr1, size);
	task.moveZero(&arr1, size);
	print(" After move zero elements at middle ");
	task.printArray(arr1, size);
	// Test case 2
	size = arr2.count;
	print("\n Array Element ");
	task.printArray(arr2, size);
	task.moveZero(&arr2, size);
	print(" After move zero elements at middle ");
	task.printArray(arr2, size);
	// Test case 3
	size = arr3.count;
	print("\n Array Element ");
	task.printArray(arr3, size);
	task.moveZero(&arr3, size);
	print(" After move zero elements at middle ");
	task.printArray(arr3, size);
	// Test case 4
	size = arr4.count;
	print("\n Array Element ");
	task.printArray(arr4, size);
	task.moveZero(&arr4, size);
	print(" After move zero elements at middle ");
	task.printArray(arr4, size);
	// Test case 4
	size = arr5.count;
	print("\n Array Element ");
	task.printArray(arr5, size);
	task.moveZero(&arr5, size);
	print(" After move zero elements at middle ");
	task.printArray(arr5, size);
}
main();

Output

 Array Element
   0   0   0   0   3   1   0   5   0   0   1   0
 After move zero elements at middle
   3   5   0   0   0   0   0   0   0   0   1   1

 Array Element
   0   2   3   0   3   0   1
 After move zero elements at middle
   2   3   0   0   0   1   3

 Array Element
   1   2   5   3   4   0   4
 After move zero elements at middle
   1   5   2   0   4   3   4

 Array Element
   0   0   4   0   0   9
 After move zero elements at middle
   4   0   0   0   0   9

 Array Element
   0   0   4   0   0
 After move zero elements at middle
   4   0   0   0   0
/*
    Kotlin Program
    Move all zero to middle of array
*/
class MoveElement
{
	//Display elements of given array
	fun printArray(arr: Array<Int>, size: Int): Unit
	{
		var i: Int = 0;
		while (i<size)
		{
			print("  " + arr[i]);
			i += 1;
		}
		print("\n");
	}
	// Swap the elements of array by given location
	fun swapElement(arr: Array<Int>, front: Int, tail: Int): Unit
	{
		var temp: Int = arr[front];
		arr[front] = arr[tail];
		arr[tail] = temp;
	}
	// Move all zero elements to middle of array
	fun moveZero(arr: Array<Int>, size: Int): Unit
	{
		var left: Int = 0;
		var right: Int = size - 1;
		var flag: Int = 0;
		var i: Int = 1;
		while (left<right && i<right)
		{
			if (arr[left] != 0 && arr[right] != 0)
			{
				// Best case when boundary element is not zero
				left += 1;
				right -= 1;
				i += 1;
			}
			else
			if (arr[i] != 0)
			{
				if (flag == 0 && arr[left] == 0)
				{
					// When need to change the left boundary element
					this.swapElement(arr, i, left);
					left += 1;
					flag = 1;
					i += 1;
				}
				else
				if (flag == 1 && arr[right] == 0)
				{
					// When need to change the right boundary element
					this.swapElement(arr, i, right);
					right -= 1;
					flag = 0;
					i += 1;
				}
				else
				{
					// When top two case fail means we need to change its sequence
					this.swapElement(arr, left, right);
				}
			}
			else
			{
				i += 1;
			}
		}
	}
}
fun main(args: Array<String>): Unit
{
	var task: MoveElement = MoveElement();
	// Define array of integer elements
	var arr1: Array<Int> = arrayOf(0, 0, 0, 0, 3, 1, 0, 5, 0, 0, 1, 0);
	var arr2: Array<Int> = arrayOf(0, 2, 3, 0, 3, 0, 1);
	var arr3: Array<Int> = arrayOf(1, 2, 5, 3, 4, 0, 4);
	var arr4: Array<Int> = arrayOf(0, 0, 4, 0, 0, 9);
	var arr5: Array<Int> = arrayOf(0, 0, 4, 0, 0);
	// Test case 1
	var size: Int = arr1.count();
	print(" Array Element \n");
	task.printArray(arr1, size);
	task.moveZero(arr1, size);
	print(" After move zero elements at middle \n");
	task.printArray(arr1, size);
	// Test case 2
	size = arr2.count();
	print("\n Array Element \n");
	task.printArray(arr2, size);
	task.moveZero(arr2, size);
	print(" After move zero elements at middle \n");
	task.printArray(arr2, size);
	// Test case 3
	size = arr3.count();
	print("\n Array Element \n");
	task.printArray(arr3, size);
	task.moveZero(arr3, size);
	print(" After move zero elements at middle \n");
	task.printArray(arr3, size);
	// Test case 4
	size = arr4.count();
	print("\n Array Element \n");
	task.printArray(arr4, size);
	task.moveZero(arr4, size);
	print(" After move zero elements at middle \n");
	task.printArray(arr4, size);
	// Test case 4
	size = arr5.count();
	print("\n Array Element \n");
	task.printArray(arr5, size);
	task.moveZero(arr5, size);
	print(" After move zero elements at middle \n");
	task.printArray(arr5, size);
}

Output

 Array Element
  0  0  0  0  3  1  0  5  0  0  1  0
 After move zero elements at middle
  3  5  0  0  0  0  0  0  0  0  1  1

 Array Element
  0  2  3  0  3  0  1
 After move zero elements at middle
  2  3  0  0  0  1  3

 Array Element
  1  2  5  3  4  0  4
 After move zero elements at middle
  1  5  2  0  4  3  4

 Array Element
  0  0  4  0  0  9
 After move zero elements at middle
  4  0  0  0  0  9

 Array Element
  0  0  4  0  0
 After move zero elements at middle
  4  0  0  0  0




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment