php基础教程-数组快速排序算法[技术分享]

快速排序

1、从数组中选出一个元素(通常是第一个),作为参照对象

2、定义两个数组,目标数组中剩余的元素与参照元素挨个比较:小的放到一个数组,大的放在另外一个数组

3、第二步执行完之后,前后的数组顺序不确定,但是确定了自己的位置

4、酱得到的小数组按照第一到第三步重复操作

5、回溯最小一个元素数组

示例代码

示例地址:https://www.vqqc.cn/try/php/basics/quick_sort.php

<?php

// PHP数组排序:快速排序
$arr = array(1,6,3,4,9,2,7,8);

// 快速排序
function quick_sort($arr){
    // 递归出口
    $len = count($arr);
    if($len <= 1) return $arr;
    
    // 取出某个元素,然后将剩余的数组元素,分散到两个不同的数组中
    $left = $right = array();
    
    for($i = 1; $i < $len;$i++){
        // 第一个元素作为比较元素
        // 比较:小的放left中,大的放right中
        if($arr[$i] < $arr[0]){
            $left[] = $arr[$i];
        }else{
            $right[] = $arr[$i];
        }
    }
    // $left和$right数组元素没有排好序:递归点
    $left = quick_sort($left);
    $right = quick_sort($right);
    
    // 合并三个数组
    return array_merge($left,(array)$arr[0],$right);
}

echo '<pre>';
print_r(quick_sort($arr));

返回结果

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 6
    [5] => 7
    [6] => 8
    [7] => 9
)
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容