<?php
function mergeSort($arr) {
$len = count($arr);
if ($len <= 1) {
return $arr;
}
$mid = intval($len / 2);
$left = array_slice($arr, 0, $mid);
$right = array_slice($arr, $mid);
$left = mergeSort($left);
$right = mergeSort($right);
$arr = merge($left, $right);
return $arr;
}
function merge($arrA, $arrB) {
$arrC = array();
while (count($arrA) && count($arrB)) {
$arrC[] = $arrA[0] < $arrB[0] ? array_shift($arrA) : array_shift($arrB);
}
return array_merge($arrC, $arrA, $arrB);
}
$arr = [1,21,2,3,333,4,23];
$res = mergeSort($arr,0,count($arr)-1);
print_r($res);