Skip to main content

Move all negative elements to end in php

Php program for Move all negative elements to end. Here mentioned other language solution.

<?php
// Php program for
// Move all negative elements at the end of array
class MyArray
{
	// Display array elements
	public	function display($arr, $n)
	{
		for ($i = 0; $i < $n; $i++)
		{
			echo "  ".($arr[$i]);
		}
		print("\n");
	}
	// Swap the given array elements
	public	function swap(&$arr, $start, $end)
	{
		$temp = $arr[$start];
		$arr[$start] = $arr[$end];
		$arr[$end] = $temp;
	}
	// Method which is move negative elements
	public	function moveNegative(&$arr, $n)
	{
		// first index
		$i = 0;
		// last index
		$j = $n - 1;
		while ($i < $j)
		{
			if ($arr[$i] < 0 && $arr[$j] >= 0)
			{
				// When [i] index are have negative value 
				// And [j] is positive then swapping elements values
				$this->swap($arr, $i, $j);
				// Modified index
				$i++;
				$j--;
			}
			else if ($arr[$i] >= 0)
			{
				// When element of [i] is not negative
				$i++;
			}
			else
			{
				$j--;
			}
		}
	}
	public static function main()
	{
		$task = new MyArray();
		// Array which are containing positive and negative values
		$arr = array(1, -1, 3, 2, -7, -5, 11, 6);
		$n = count($arr);
		echo "Before Arrange : \n";
		// Before move element
		$task->display($arr, $n);
		// Move negative elements
		$task->moveNegative($arr, $n);
		// After arrange
		echo "After Arrange : \n";
		// After move element
		$task->display($arr, $n);
	}
}
MyArray::main();

Output

Before Arrange :
  1  -1  3  2  -7  -5  11  6
After Arrange :
  1  6  3  2  11  -5  -7  -1




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