之前写冒泡,选择排序的算法。今天就抽空看看快速排序,快速排序先选择一个基数,将数组中的数据分别与这个基数对比。小于基数的放在一组,大于基数的放在一组。最后在递归对这两个数组继续排序。最后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)));