使用PHP代码实现快速排序算法
快速排序是十分常用的高效率的算法,其思想是:先选一个标尺,用它把整个队列过一遍筛选,以保证其左边的元素都小于它,其右边的元素大于它
public function handle()
{
$arr = [12,33,5,78,11];
$res = $this->quickSort($arr);
dump($res);
}
//快速排序
protected function quickSort($arr){
// 获取数组长度
$length = count($arr);
// 判断长度是否需要继续二分比较
if($length <= 1){
return $arr;
}
// 定义基准元素
$base = $arr[0];
// 定义两个空数组,用于存放和基准元素的比较后的结果
$left = [];
$right = [];
// 遍历数组
for ($i=1; $i < $length; $i++) {
// 和基准元素作比较
if ($arr[$i] > $base) {
$right[] = $arr[$i];
}else {
$left[] = $arr[$i];
}
}
// 然后递归分别处理left和right
$left = $this->quickSort($left);
$right = $this->quickSort($right);
// 合并
return array_merge($left,[$base],$right);
}
网友评论