基本的なソートアルゴリズムであるマージソートをPHPで行う。
-
<?php
-
-
/*
-
* マージソートを行う
-
*/
-
-
//併合する関数
-
function mergeArr($left_arr, $right_arr) {
-
-
-
-
$i = 0;
-
$j = 0;
-
$k = 0;
-
-
while ($i <count($left_arr) && $j <count($right_arr)) {
-
-
if ($left_arr[$i] <$right_arr[$j]) {
-
$result_arr[$k] = $left_arr[$i];
-
$i++;
-
$k++;
-
} else {
-
$result_arr[$k] = $right_arr[$j];
-
$j++;
-
$k++;
-
}
-
}
-
-
while ($i <count($left_arr)) {
-
$result_arr[$k] = $left_arr[$i];
-
$i++;
-
$k++;
-
}
-
-
while ($j <count($right_arr)) {
-
$result_arr[$k] = $right_arr[$j];
-
$j++;
-
$k++;
-
}
-
-
return $result_arr;
-
}
-
-
//マージソートを行う関数
-
function mergeSort($num_arr) {
-
-
if (count($num_arr)>
1) {
-
-
-
return mergeArr(mergeSort($left_arr), mergeSort($right_arr));
-
} else {
-
return $num_arr;
-
}
-
}
-
-
$num_arr =
array(2,
41,
105,
51,
86,
21,
75,
54,
46,
19);
-
$result_arr = mergeSort($num_arr);
-
-
終わり。