算法-二分快排

9 篇文章 0 订阅

进一个数组,按照二分快排的规则,将他们的元素按照从小到大的顺序排序

<?php

   function quickSort($arr){
       $base = $arr[0];
       $len = count($arr);
       if($len<=1){    //注意是<=1因为传进来的数组也有可能是空数组
           return $arr;
       }
       $left_arr = [];
       $right_arr = [];

        for($i=1;$i<$len;$i++){
            if($arr[$i]<$base){
                $left_arr[] = $arr[$i];
            }else{
                $right_arr[] = $arr[$i];
            }
        }

        $left_arr =quickSort($left_arr);
        $right_arr =quickSort($right_arr);
        return array_merge($left_arr,array($base),$right_arr);
   }

$c = quickSort([6,5,3,7,10,4,2]);
print_r($c);
?>

解题思路:

选择第一个为基础元素,然后将其余的元素与之比较,小的放一个数组,大的放一个数组。然后再把切分的两个元素是乱的的数组再次拿来进行二分排序。然后一直这样拆分、一直到两个数组中的元素都细分到一对一的这种无法在进行比较了之后一直。

将左边的数组和基数元素和右边的数组合并、合并、再合并 。最后得到得就是排序了的数组。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值