PHP实现快速排序
Posted 幸运炸酱草
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP实现快速排序相关的知识,希望对你有一定的参考价值。
快速排序的概念:通过初始一个中间值(一般是数组的第一个数),将小于这个初始值的放左边,大于初始值的放右边,形成两个新的数组,再将这两个数组继续进行拆分,直到最终取得的数组内仅为一个元素,最后将这些数组进行合并,就实现了我们所说的快速排序,接下来就演示一个如何使用php实现快速排序:
//快速排序
$arr = array(5,4,9,2,3,8,6);
function quick($arr){
//递归出口:当数组内部元素小于等于1时,则返回这个数组
$len = count($arr);
if($len <=1)return $arr;
$left = $right = array();
for($i=1;$i<$len;$i++){
/*假设当前数组的第一个元素$arr[0]为当前数组的中间值,
当$arr[$i]小于中间值时,则放到左边,反之则放到右边*/
if($arr[$i] < $arr[0]){
$left[] = $arr[$i];
}else{
$right[] = $arr[$i];
}
}
/*递归:此时的$left和$right内数组元素没有排好序,
通过递归实现排序*/
$left = quick($left);
$right = quick($right);
/*合并数组,$arr[0]为元素而非数组,通过(array)的方式
强制转换成一个数组再进行合并*/
return array_merge($left,(array)$arr[0],$right);
}
echo '<pre>';
print_r(quick($arr));
谢谢观看~
以上是关于PHP实现快速排序的主要内容,如果未能解决你的问题,请参考以下文章