新闻中心
php冒泡排序从小到大的方法
PHP冒泡排序核心是相邻元素两两比较、大的往后挪,每轮将最大值“冒泡”至末尾,共需n-1轮;可优化为提前终止,封装成函数支持任意数组,但时间复杂度为O(n²),仅适用于小数据或教学。

PHP冒泡排序从小到大,核心是**相邻元素两两比较、大的往后挪**,每轮把当前最大值“冒泡”到末尾,重复n-1轮即可完成升序排列。
基本实现(双层for循环)
这是最直观的写法,适合理解原理:
- 外层控制轮数(共count($arr) - 1轮)
- 内层控制每次比较范围(每轮末尾已有序,可缩小范围)
- 若前一个元素大于后一个,就交换位置
$arr = [64, 34, 25, 12, 22, 11, 90];
<p>$n = count($arr);
for ($i = 0; $i < $n - 1; $i++) {
for ($j = 0; $j < $n - 1 - $i; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
// 交换
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}</p><p>print_r($arr); // 输出:[11, 12, 22, 25, 34, 64, 90]
优化版(提前结束)
如果某一轮没发生任何交换,说明数组已经有序,可提前退出,避免多余循环:
- 用一个$swapped标记记录本轮是否交换
- 若为false,直接break
$arr = [64, 34, 25, 12, 22, 11, 90]; $n = count($arr); <p>for ($i = 0; $i < $n - 1; $i++) { $swapped = false; for ($j = 0; $j < $n - 1 - $i; $j++) { if ($arr[$j] > $arr[$j + 1]) { $temp = $arr[$j]; $arr[$j] = $arr[$j + 1]; $arr[$j + 1] = $temp; $swapped = true; } } if (!$swapped) break; }
封装成函数(支持任意数组)
写成函数更实用,注意传参用引用&$arr可直接修改原数组:
function bubbleSort(&$arr) {
$n = count($arr);
for ($i = 0; $i < $n - 1; $i++) {
$swapped = false;
for ($j = 0; $j < $n - 1 - $i; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
$swapped = true;
}
}
if (!$swapped) break;
}
}
<p>// 使用示例
$nums = [5, 2, 8, 1, 9];
bubbleSort($nums);
print_r($nums); // [1, 2, 5, 8, 9]
注意事项和局限性
冒泡排序简单易懂,但效率不高,仅适合小数据或教学场景:
- 时间复杂度:最坏/平均O(n²),最好(已有序)可优化到O(n)
- 空间复杂度:O(1)(原地排序)
- 实际开发中建议用内置sort()函数,它基于快速排序或其它高效算法
基本上就这些。理解思路比死记代码更重要——记住“两两比、大的沉底、轮轮缩、早停省力”。
以上就是php冒泡排序从小到大的方法的详细内容,更多请关注其它相关文章!
# 不高
# 襄阳网站建设优化方案
# 温江区推广保洁招聘网站
# php网站建设设计制作
# 顺平seo视频优化
# 苏州关键词排名怎么处理
# 营销推广方式必火2星
# 基础seo是什么意思
# 网店网站建设宣传
# 推广营销特点包括什么方面
# 招远智能营销推广优化
# 解决问题
# 更重要
# php
# 中文网
# 相关文章
# 适用于
# 升序
# 转数
# 这是
# 从小到大
# 冒泡排序
# 排列
# app
# 排序
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】
MongoDB聚合管道:正确匹配对象数组中_id的方法
处理嵌套交互式控件:前端可访问性指南
如何在Promise链中优雅地中断后续then执行
在Pyomo中实现基于变量的条件约束:Big-M方法详解
邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧
高德地图沿途添加点失败如何解决 高德多点规划方法
Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】
J*a中实现Go语言select通道多路复用机制
Yandex浏览器官方网页版入口 Yandex浏览器最新版官网
SteamMachine定价或为699美元 大家想入手吗?
poki免费入口快捷访问 poki人气小游戏直接玩站点
抖音极速版最新版本 抖音极速版官方下载地址
Lar*el用户头像管理:实现图片缩放、存储与旧文件安全删除的最佳实践
Pandas DataFrame 多条件优先级排序与排名
MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令
文本文档写html代码怎么运行_文本文档html代码运行步骤【教程】
黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】
顺丰快递查单号物流信息 顺丰快递小程序查询入口
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
b站赚钱渠道_b站收益来源
mysql备份恢复性能优化_mysql备份恢复性能优化方法
动漫花园资源网使用步骤_动漫花园资源网下载流程
poki网页游戏推荐_poki免费游戏平台入口
QQ官网正版登录链接 QQ在线登录入口最新
如何在Python中使用Optional类型处理可变对象并避免Pylint警告
双系统安装时,如何设置默认启动系统? msconfig命令了解一下!
Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题
J*a TimerTask中HashMap意外清空的深层原因与解决方案
文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】
Win11输入法不见了怎么办_Windows11恢复语言栏显示方法
Discord Slash 命令响应超时问题的异步解决方案
vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法
漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端
Python getattr() 异常处理深度解析:避免程序意外退出
QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口
composer 和 npm/yarn 在管理依赖方面有什么核心思想差异?
58动漫网在线官方网 58动漫网正版动漫入口网址
谷歌学术网站直达地址 谷歌学术搜索网页版一键进入
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧
b站如何看历史记录_b站观看历史找回方法
Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全
优化大型XML文件解析:基于Python流式处理的内存高效方案
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑
J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程
在VS Code中配置和运行Dart程序的完整步骤
Go Martini框架:动态服务解码后的图片内容


2025-12-08
浏览次数:次
返回列表
4, 25, 12, 22, 11, 90];
$n = count($arr);
<p>for ($i = 0; $i < $n - 1; $i++) {
$swapped = false;
for ($j = 0; $j < $n - 1 - $i; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
$swapped = true;
}
}
if (!$swapped) break;
}