<?php
//&$a,传引用调用
function q_sort(&$a,$l,$r) {
//保证数组多余2个,是结束递归条件
if($l < $r) {
$i =$l;
$j = $r;
//取$a[$l]作为基准
$tmp = $a[$l];
//一次排序结果
while ($i < $j) {
//大于基准j--左移
while($i < $j && $tmp <= $a[$j]) {
$j--;
}
//符合条件交换
if($i <$j){
$a[$i++] = $a[$j];
}
//大于基准i--左移
while($i < $j && $tmp >= $a[$i]) {
$i++;
}
if($i <$j){
$a[$j--] = $a[$i];
}
}
//把基准放到相应位置,即基准已经排好序,递归调用,排除基准
$a[$i] = $tmp;
q_sort($a,$l, $i-1);
q_sort($a,$i+1, $r);
}
}
$arr = [1,21,2,3,333,4,23];
q_sort($arr,0,count($arr)-1);
print_r($arr);
php排序-快排
最新推荐文章于 2022-12-02 16:46:14 发布