php快速排序算法

介绍:通过设置一个初始中间值,来将需要排序的数组分成3部分,小于中间值的左边,中间值,大于中间值的右边,继续递归用相同的方式来排序左边和右边,最后合并数组

代码如下:

<?php

$a = array(2,13,42,34,56,23,67,365,87665,54,68,3);

function quick_sort($a)
{
// 判断是否需要运行,因下面已拿出一个中间值,这里<=1
if (count($a) <= 1) {
    return $a;
}

$middle = $a[0]; // 中间值

$left = array(); // 接收小于中间值
$right = array();// 接收大于中间值

// 循环比较
for ($i=1; $i < count($a); $i++) { 

    if ($middle < $a[$i]) {

        // 大于中间值
        $right[] = $a[$i];
    } else {

        // 小于中间值
        $left[] = $a[$i];
    }
}

// 递归排序划分好的2边
$left = quick_sort($left);
$right = quick_sort($right);

// 合并排序后的数据,别忘了合并中间值
return array_merge($left, array($middle), $right);
}

print_r(quick_sort($a));
//结果
//Array ( [0] => 2 [1] => 3 [2] => 13 [3] => 23 [4] => 34 [5] => 42 [6] => 54 [7] => 56 [8] => 67 [9] => 68 [10] => 365 [11] => 87665 )
posted @   八戒vs  阅读(155)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示