Merge sort example in PHP

<?php
$arr = array( 6,1,3,7,5,2,3,4,45,5,4,75,8,6,78,7980890,2,4,2,432,5,34,5634,34,5); 
echo "<br>".implode(',',$arr)."<br>";
$arr=mergesort($arr);
echo implode(',',$arr);

function mergesort($numlist)
{
	if(count($numlist) == 1 ) return $numlist;

	$mid = count($numlist) / 2;
	$left = array_slice($numlist, 0, $mid);
	$right = array_slice($numlist, $mid);

	$left = mergesort($left);
	$right = mergesort($right);
	
	return merge($left, $right);
}

function merge($left, $right)
{
	$result=array();
	$leftIndex=0;
	$rightIndex=0;

	while($leftIndex<count($left) && $rightIndex<count($right))
	{
		if($left[$leftIndex]>$right[$rightIndex])
		{

			$result[]=$right[$rightIndex];
			$rightIndex++;
		}
		else
		{
			$result[]=$left[$leftIndex];
			$leftIndex++;
		}
	}
	while($leftIndex<count($left))
	{
		$result[]=$left[$leftIndex];
		$leftIndex++;
	}
	while($rightIndex<count($right))
	{
		$result[]=$right[$rightIndex];
		$rightIndex++;
	}
	return $result;
}

output:

6,1,3,7,5,2,3,4,45,5,4,75,8,6,78,7980890,2,4,2,432,5,34,5634,34,5
1,2,2,2,3,3,4,4,4,5,5,5,5,6,6,7,8,34,34,45,75,78,432,5634,7980890

demo

Search within Codexpedia

Custom Search

Search the entire web

Custom Search