function merge_sort ($array
{
  if (count$array) <= 1) Â
    return $array; Â
 Â
  // sort each half
  $mid = floorcount$array)/2);
  $left = merge_sortarray_slice$array, 0, $mid)); Â
  $right = merge_sortarray_slice$array, $mid)); Â
 Â
  // merge the arrays
  $array = array();
  while (count$left)>0 && count$right)>0) { Â
    if ($left[0] <= $right[0]) { Â
      array_push$array, array_shift$left)); Â
    } else { Â
      array_push$array, array_shift$right)); Â
    } Â
  } Â
  $array = array_merge$array, $left, $right); Â
 Â
  return $array
}Â