快速排序算法的原理主要是通过递归的思路来进行排序,我上网查过很多phper的程序发现都不是很清晰,现将代码贴出,供大家参考。
<?php /** * Created by PhpStorm. * User: user * Date: 03/03/2017 * Time: 10:53 */ /* * 1.快速排序法 * 原理见:https://www.oschina.net/question/1397765_159365 */ function quickSort($arr){ if (count($arr) > 1){ //从数组中选出一个"基准" $k = $arr[0]; $x = array(); $y = array(); $size = count($arr); for ($i = 1; $i < $size; $i++){ if ($arr[$i] <= $k){ $x[] = $arr[$i]; }elseif($arr[$i] > $k){ $y[] = $arr[$i]; } } //使用递归算法,在$arr有两个值以上时调用quickSort() $x = quickSort($x); $y = quickSort($y); //将"基准"和递归的两个数组进行合并 return array_merge($x, array($k), $y); }else{ return $arr; } } $arr = [13, 25, 109, 1, 11, 98]; $res = quickSort($arr); var_dump($res); ?>