全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php冒泡排序从小到大的方法

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

PHP冒泡排序从小到大,核心是**相邻元素两两比较、大的往后挪**,每轮把当前最大值“冒泡”到末尾,重复n-1轮即可完成升序排列。

基本实现(双层for循环

这是最直观的写法,适合理解原理:

  • 外层控制轮数(共count($arr) - 1轮)
  • 内层控制每次比较范围(每轮末尾已有序,可缩小范围)
  • 若前一个元素大于后一个,就交换位置
$arr = [64, 34, 25, 12, 22, 11, 90];

$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; } } }

print_r($arr); // 输出:[11, 12, 22, 25, 34, 64, 90]

优化版(提前结束)

如果某一轮没发生任何交换,说明数组已经有序,可提前退出,避免多余循环:

  • 用一个$swapped标记记录本轮是否交换
  • 若为false,直接break
$arr = [64, 34, 25, 12, 22, 11, 90];
$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; }

封装成函数(支持任意数组)

写成函数更实用,注意传参用引用&$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;
    }
}

// 使用示例 $nums = [5, 2, 8, 1, 9]; bubbleSort($nums); print_r($nums); // [1, 2, 5, 8, 9]

注意事项和局限性

冒泡排序简单易懂,但效率不高,仅适合小数据或教学场景:

  • 时间复杂度:最坏/平均O(n²),最好(已有序)可优化到O(n)
  • 空间复杂度:O(1)(原地排序)
  • 实际开发中建议用内置sort()函数,它基于快速排序或其它高效算法

基本上就这些。理解思路比死记代码更重要——记住“两两比、大的沉底、轮轮缩、早停省力”。


# php  # app  # 排列  # 冒泡排序  # count  # sort  # for  # 封装  # break  # 快速排序  # 循环  # 算法  # 这是  # 升序  # 适用于  # 不高  # 更重要  # 可直接  # 或其它  # 本轮  # 从小到大  # 最坏 


相关文章: 微信小程序制作网站有哪些,微信小程序需要做网站吗?  建站主机与虚拟主机有何区别?如何选择最优方案?  移民网站制作流程,怎么看加拿大移民官网?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  开心动漫网站制作软件下载,十分开心动画为何停播?  如何通过虚拟主机空间快速建站?  个人网站制作流程图片大全,个人网站如何注销?  如何快速搭建支持数据库操作的智能建站平台?  Android使用GridView实现日历的简单功能  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  盘锦网站制作公司,盘锦大洼有多少5G网站?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  网站专业制作公司有哪些,做一个公司网站要多少钱?  建站之星后台管理系统如何操作?  如何制作网站标识牌,动态网站如何制作(教程)?  c++ stringstream用法详解_c++字符串与数字转换利器  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  如何选择域名并搭建高效网站?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  建站之星如何助力企业快速打造五合一网站?  如何通过免费商城建站系统源码自定义网站主题与功能?  如何设置并定期更换建站之星安全管理员密码?  大连 网站制作,大连天途有线官网?  建站主机选哪家性价比最高?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  建站上传速度慢?如何优化加速网站加载效率?  c++怎么用jemalloc c++替换默认内存分配器【性能】  浅析上传头像示例及其注意事项  香港服务器部署网站为何提示未备案?  如何通过二级域名建站提升品牌影响力?  股票网站制作软件,网上股票怎么开户?  如何快速启动建站代理加盟业务?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何配置FTP站点权限与安全设置?  建站之星微信建站一键生成小程序+多端营销系统  如何通过虚拟主机快速搭建个人网站?  建站之星备案是否影响网站上线时间?  如何通过西部数码建站助手快速创建专业网站?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  视频网站制作教程,怎么样制作优酷网的小视频?  网站按钮制作软件,如何实现网页中按钮的自动点击?  建站之星如何快速生成多端适配网站?  网站制作报价单模板图片,小松挖机官方网站报价?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  制作营销网站公司,淘特是干什么用的?  网站制作需要会哪些技术,建立一个网站要花费多少?  建站之星免费模板:自助建站系统与智能响应式一键生成  建站之星ASP如何实现CMS高效搭建与安全管理? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。