/*
* 快速排序法
* */
public function quick_sort2($arr) {
$length = count($arr);
//先判断是否需要继续进行 递归出口:数组长度为1,直接返回数组
if(!is_array($arr)||$length <= 1) {return $arr;}
//选择第一个元素作为基准
$baseValue = $arr[0];
//遍历除了标尺外的所有元素,按照大小关系放入两个数组内
//初始化两个数组
$leftArr = array(); //小于基准的
$rightArr = array(); //大于基准的
//使用for循环进行遍历,把选定的基准当做比较的对象
for($i = 1; $i<$length; $i++) {
if( $arr[$i] < $baseValue) {
//放入左边数组
$leftArr[] = $arr[$i];
} else {
//放入右边数组
$rightArr[] = $arr[$i];
}
}
//再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
$leftArr = $this->quick_sort2($leftArr);
$rightArr = $this->quick_sort2($rightArr);
//合并 左边 标尺 右边, 注意:array($baseValue),关联着重复数据
return array_merge($leftArr, array($baseValue), $rightArr);
}
PHP常用排序方法---快速排序
于 2021-05-06 18:36:23 首次发布

674

被折叠的 条评论
为什么被折叠?



