首页 > 编程语言 > 详细

快速排序

时间:2020-09-06 19:48:31      阅读:60      评论:0      收藏:0      [点我收藏+]
<?php

/**
 * 快速排序 随机选择数组一个元素作为中间基准数字,并以此数字来不断分割数组为左右两个
 *
 * @param [type] $arr
 * @return void
 */
function quick(array $arr):array
{
    $len = count($arr);
    if ($len < 1) {
        return $arr;
    }
    // 左边数组小数
    $left = [];
    // 右边数组大数
    $right = [];
    // 基准数字
    $mid = $arr[0];
    for ($i=1; $i < $len; $i++) { 
        if ($arr[$i] > $mid) {
            $right[] = $arr[$i];
        } else {
            $left[] = $arr[$i];

        }
    }
    $left = quick($left);
    $right = quick($right);
    return array_merge($left, [$mid], $right);
}
$arr = [32,44,67,334,99,1];
var_dump(quick($arr));

  

快速排序

原文:https://www.cnblogs.com/jasonyou/p/13622614.html

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