全网整合营销服务商

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

免费咨询热线: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  # 快速排序  # 循环  # 算法  # 这是  # 升序  # 适用于  # 不高  # 更重要  # 可直接  # 或其它  # 本轮  # 从小到大  # 最坏 


相关文章: 山东网站制作公司有哪些,山东大源集团官网?  如何通过IIS搭建网站并配置访问权限?  宝塔Windows建站如何避免显示默认IIS页面?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  如何正确下载安装西数主机建站助手?  如何用低价快速搭建高质量网站?  如何快速查询网站的真实建站时间?  建站之星如何实现五合一智能建站与营销推广?  西安专业网站制作公司有哪些,陕西省建行官方网站?  智能起名网站制作软件有哪些,制作logo的软件?  安徽网站建设与外贸建站服务专业定制方案  如何快速搭建二级域名独立网站?  建站之星logo尺寸如何设置最合适?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  英语简历制作免费网站推荐,如何将简历翻译成英文?  实例解析Array和String方法  阿里云网站制作公司,阿里云快速搭建网站好用吗?  ,怎么用自己头像做动态表情包?  建站之星后台管理如何实现高效配置?  如何在IIS中配置站点IP、端口及主机头?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  常州企业网站制作公司,全国继续教育网怎么登录?  建站OpenVZ教程与优化策略:配置指南与性能提升  招贴海报怎么做,什么是海报招贴?  如何选择美橙互联多站合一建站方案?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  如何快速搭建高效香港服务器网站?  建站之星后台管理系统如何操作?  如何高效利用200m空间完成建站?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何在景安服务器上快速搭建个人网站?  如何确保西部建站助手FTP传输的安全性?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  详解jQuery停止动画——stop()方法的使用  建站之星如何快速生成多端适配网站?  济南专业网站制作公司,济南信息工程学校怎么样?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  制作宣传网站的软件,小红书可以宣传网站吗?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  网站网页制作专业公司,怎样制作自己的网页?  如何高效配置香港服务器实现快速建站?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  高端企业智能建站程序:SEO优化与响应式模板定制开发  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  如何用花生壳三步快速搭建专属网站?  如何获取上海专业网站定制建站电话?  内部网站制作流程,如何建立公司内部网站?  SQL查询语句优化的实用方法总结 

您的项目需求

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