归并排序:
<?php
class Solution {
function mergeSort(&$arr, $start, $end) {
if($start >= $end) {
return ;
}
$mid = intval(($start + $end) / 2);
$this->mergeSort($arr, $start, $mid);
$this->mergeSort($arr, $mid+1, $end);
$this->merge($arr, $start, $mid, $end);
return $arr;
}
function merge(&$a, $start, $mid, $end) {
$t = array();
for($i = $start, $j = $mid + 1; $i <= $mid && $j <= $end;) {
if($a[$i] < $a[$j]) {
array_push($t, $a[$i]);
$i++;
} else {
array_push($t, $a[$j]);
$j++;
}
}
while($i <= $mid) {
array_push($t, $a[$i]);
$i++;
}
while($j <= $end) {
array_push($t, $a[$j]);
$j++;
}
for($i = 0; $i < count($t); $i++) {
$a[$start+$i] = $t[$i];
}
}
}
$ok = new Solution();
$arr = array(56, 78, 12, 46, 34, 64, 34, 15, 99, 64, 21);
print_r($ok->mergeSort($arr, 0, 10));
3958

被折叠的 条评论
为什么被折叠?



