Merge Sort
Tue. December 13, 2011Categories: PHP
Tags: sorting
function merge_sort(&$array) { if (count($array) < 2) return; $mid = count($array) / 2; $left = array_slice($array, 0, $mid); $right = array_slice($array, $mid); merge_sort($left); merge_sort($right); if (end($left) <= $right[0]) { $array = array_merge($left, $right); return; } // Merge $array = array(); $i = 0; $j = 0; while ($i < count($left) && $j < count($right)) { if ($left[$i] <= $right[$j]) { $array[] = $left[$i]; $i++; } else { $array[] = $right[$j]; $j++; } } for (; $i < count($left); $i++) { $array[] = $left[$i]; } for (; $j < count($right); $j++) { $array[] = $right[$j]; } }