上一篇
场景引入:
想象你正整理杂乱的扑克牌🃏——A在最左,K在最右,中间数字按大小排列,如果手动操作,你可能要花半小时;但若用PHP快速排序算法,电脑1秒就能搞定!今天我们就拆解这个“数组整理术”的终极奥义~
快速排序(Quick Sort)是一种分治策略的高效排序算法,平均时间复杂度为O(n log n),它的核心思想是:
💡 趣味比喻:就像班主任让学生按身高排队,先拉出中间身高的小明,矮的站左,高的站右,再对左右两队如法炮制~
function quickSort($array) { // 递归终止条件:数组只剩1个或0个元素 if (count($array) <= 1) { return $array; } $pivot = $array[0]; // 选第一个元素作基准(实际可优化) $left = $right = []; // 分区操作 for ($i = 1; $i < count($array); $i++) { if ($array[$i] < $pivot) { $left[] = $array[$i]; // 比基准小的进左队 } else { $right[] = $array[$i]; // 比基准大的进右队 } } // 递归合并结果 return array_merge( quickSort($left), [$pivot], quickSort($right) ); }
$pivot = $array[rand(0, count($array)-1)];
假设我们有这样的数组:
$fruits = ["🍎" => 5.2, "🍌" => 3.8, "🍇" => 7.5, "🍊" => 4.1];
按价格升序排列的代码:
function sortByPrice($array) { if (count($array) <= 1) return $array; $prices = array_values($array); $pivot = $prices[0]; $left = $right = []; foreach ($array as $fruit => $price) { if ($price < $pivot) $left[$fruit] = $price; elseif ($price > $pivot) $right[$fruit] = $price; } return array_merge( sortByPrice($left), [$pivot => array_search($pivot, $array)], sortByPrice($right) ); } print_r(sortByPrice($fruits));
输出结果:
🍌 => 3.8
🍊 => 4.1
🍎 => 5.2
🍇 => 7.5
场景对比 | 快速排序 ✅ | 冒泡排序 ❌ |
---|---|---|
10万条数据 | 3秒 | 2分钟+ |
内存占用 | 中等 | 低 |
代码可读性 | 较清晰 | 简单 |
✨ 就像用吸尘器代替扫帚,快速排序是PHP处理大规模排序的“现代武器”!
下次遇到乱序数组时,不妨大喊一声:“Quick Sort,启动!” 💻⚡
本文由 郏燕 于2025-08-02发表在【云服务器提供商】,文中图片由(郏燕)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/512128.html
发表评论