|
<?php
$unsorted = array();
for ($i = 0; $i < 10; $i++) {
$unsorted[] = rand(0,1000);
}
print "Unsorted Array. <br />";
print implode(',', $unsorted);
print "<br />";
print "Sorted Array. <br />";
$sort = quick_sort($unsorted);
print implode(',',$sort);
function quick_sort($arr = array()) {
$size = count($arr);
if (is_array($arr) && ($size == 0 || $size == 1)) return $arr;
$k = $arr[0];
$less = array();
$great = array();
// 通过比较 k 来分隔为2个数组,1个比 k的值大,另一个比k小
for($i=$size; --$i;) {
if ($arr[$i] <= $k) {
$less[] = $arr[$i];
} else {
$great[] = $arr[$i];
}
}
// 2个递归调用
return array_merge(quick_sort($less),array($k),quick_sort($great));
} |
|
|