之前写冒泡,选择排序的算法。今天就抽空看看快速排序,快速排序先选择一个基数,将数组中的数据分别与这个基数对比。小于基数的放在一组,大于基数的放在一组。最后在递归对这两个数组继续排序。最后merge返回就是排序好的数据了。
function quick_sort(array $arr) {
$length = count($arr);
if ($length <= 1) return $arr;
$leftArr = $rightArr = array();
$baseValue = $arr[0];
for ($i = 1; $i <= $length - 1; $i++) {
if ($arr[$i] <= $baseValue)
$leftArr[] = $arr[$i];
else
$rightArr[] = $arr[$i];
}
return array_merge(quick_sort($leftArr), array($baseValue), quick_sort($rightArr));
}
print_r(quick_sort(array(1,5,3,6,7,2)));