首页 > 编程语言 > 详细

php快速排序

时间:2020-03-20 18:40:22      阅读:62      评论:0      收藏:0      [点我收藏+]

思路:找一个值作为中间值,然后比他小的放到左边,比他大的放到右边,递归查找排序,最后这个值左边都是比他小的,右边都是比他大的,他是中间的位置,最后合并数组

<?php

$a = array(2,13,42,34,56,23,67,365,87665,54,68,3);
function quick_sort($a){
    if (count($a)<=1){
        return $a;
    }
    $middle = $a[0];
    $left = [];
    $right = [];
    for($i=1; $i<count($a); $i++){
        if ($middle < $a[$i]){
            $right[] = $a[$i];
        } else {
            $left[] = $a[$i];
        }
    }
    
    $left = quick_sort($left);
    $right = quick_sort($right);
    
    return array_merge($left, [$middle], $right);
}
var_dump(quick_sort($a));

php快速排序

原文:https://www.cnblogs.com/djwhome/p/12533546.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!