首先了解快速排序的原理:
1、先取一个基值,用于每次的标准定位。
2、遍历数组,将大于基值的放到右边数组,小于的放到左边数组
3、将每次的左右数组和基值一起合并
代码实现:
//快速排序
function quick_sort($array){
$count = count($array);
if ($count<=1) {
return $array;
}
//每次取最左边的值
$key = $array[0];
$leftArr = array();
$rightArr = array();
for ($i=1; $i<$count; $i++) {
//放到左边
if ($array[$i]<=$key) {
$leftArr[] = $array[$i];
}else{
//放到右边
$rightArr[] = $array[$i];
}
}
// print_r($leftArr);
// echo "<br>";
// print_r($rightArr);
// echo "<br>";
//递归调用
$leftArr = quick_sort($leftArr);
$rightArr = quick_sort($rightArr);
//合并数组
return array_merge($leftArr,array($key),$rightArr);
}
$arr = array(1,2,5,8,9,100,3,88,50,22);
// $arr = bubble_sort($arr);
$arr = quick_sort($arr);
// print_r($arr);