php四种基础排序(基础算法)----④快速排序法

快速排序法:
个人认为最好理解的排序算法

思路:选定数组中第一个元素为比较,设定两个空数组,一个左数组一个右数组,比第一个元素大的在右面,比第一个元素小的在左面,归类后将数组合并


代码如下:
<?php
$arr=array(23,55,226,345,37,52,256);
function quick($arr) {
    //先判断是否需要继续进行
    $length = count($arr);
    if($length <= 1) {
        return $arr;
    }
    //如果没有返回,说明数组内的元素个数大于1,需要排序
   
    //遍历 除了$arr[0]的所有元素,按照大小关系放入两个数组内
    //初始化两个数组
    $left = array();//小于$arr[0]的
      $right =  array();//大于$arr[0]的
     //选择第一个元素作为比较值
    for($i=1; $i<$length; $i++) {
        if($arr[0]> $arr[$i]) {
            //放入左边数组
            $left[] = $arr[$i];
        } else {
            //放入右边
            $right[] = $arr[$i];
        }
    }
    //再分别对左边和右边的数组进行相同的排序处理方式
    //递归调用这个函数,并记录结果
    $left= quick($left);
    $right= quick($right);
    //合并左边 标尺 右边
    return array_merge($left, array($arr[0]), $right);
}
echo "<pre/>";
print_r(quick($arr));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值