PHP数组学习之使用冒泡算法对元素进行升序排序!

在之前的文章《php数组学习之返回给定两数间的全部公因数和最大公因数》中,我们介绍了利用数组方法返回给定两个整数a和b间的全部公因数和最大公因数的方法。这次我们进行php数组的学习,介绍一下利用php如何实现冒泡排序,使用冒泡算法怎么对数组元素进行升序排序

首先我们来了解一下什么是冒泡算法(冒泡排序)?

冒泡排序(Bubble Sort),是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

思想:

比较相邻的两个元素,如果满足条件(第一个比第二个大,或者第一个比第二个小),就交换,否则不动。

立即学习“PHP免费学习笔记(深入)”;

再比较接下来的两个相邻的元素,然后满足条件就交换,否则依然不动。

就这样对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。直到最后的元素应该会是最大(最小)的数。

依次循环操作下去,最终一个元素,会固定在最下边。

我们使用冒泡算法对数组元素进行升序排序:

有这样一个数组:

$arr = array('23','4','0','3','2','24','20');

登录后复制

数组有7个元素,因为是实现升序排序,即从小到大排序,因此执行步骤:

第一轮循环:

第一个元素23和第二个元素4比,因为23大于4,因此执行交换操作

第二个元素(此时为23)和第三个元素0比较,因为23大于0,因此执行交换操作—23就变为第三元素

第三个元素(此时为23)和第四个元素3比,还是大于,执行交换操作—23就变为第四元素

第四个元素(此时为23)和第五个元素2比,还是大于,执行交换操作—23就变为第五元素

第五个元素(此时为23)和第六个元素24比,因为23小于24,因此不执行交换操作–第六个元素还是24

第六个元素(此时为24)和第七个元素20比,因为24大于200,执行交换操作—24就变为第七元素

经过一轮的循环对比,最大的数字就下沉到最下边了。小的数字逐渐向上浮出。

此时数组元素为:4、0、3、2、23、20、24

第二轮循环:

第一个元素4和第二个元素0比,因为4大于0,因此执行交换操作—4就变为第二元素

第二个元素(此时为4)和第三个元素3比较,因为4大于3,因此执行交换操作—4就变为第三元素

第三个元素(此时为4)和第四个元素2比,还是大于,执行交换操作—4就变为第四元素

第四个元素(此时为4)和第五个元素23比,因为4小于23,因此不执行交换操作—第五元素还是23

第五个元素(此时为23)和第六个元素20比,因为23大于20,执行交换操作–23就变为第六元素

第六个元素(此时为23)和第七个元素24比,小于,因此不执行交换操作–第七个元素还是24

此时数组元素为:0、3、2、4、20、23、24

…..

以此类推,最后数组元素为:0、2、3、4、20、23、24

我们看看实现方法:

<?php //定义一个数组$arr = array('23','4','0','3','2','24','20'); function BubbleSort(array $arr){ for ($i=0 ; $i <count($arr) ; $i++) { //设置一个空变量,交换值$data = '';for ($j=$i ; $j  $arr[$j+1]) { $data      = $arr[$i]; $arr[$i]   = $arr[$j+1];$arr[$j+1] = $data; }}} return $arr;}echo "
";print_r(BubbleSort($arr));

登录后复制

输出结果:

1.png

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程

最后给大家推荐一个PHP数组的免费视频教程:PHP函数之array数组函数视频讲解,快来学习吧!

以上就是PHP数组学习之使用冒泡算法对元素进行升序排序!的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2111191.html

(0)
上一篇 2025年2月24日 15:54:25
下一篇 2025年2月24日 11:01:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php如何获取所有的sessionid或获取所有的session?

    php获取所有的sessionid或获取所有的session的方法:session的高级用法,把session写到memcache或数据库里,就可以实现了,如果是以文件系统来驱动,你可以通过【session_save_path()】来获取。…

    2025年2月24日
    200
  • 国外主流PHP框架比较-CodeIgniter、CakePHP、ZendFramework、Symfony_PHP教程

    最近简单的使用了目前在国内用的比较多的几个主流国外php框架(不包括国内框架),大致对这些框架有个直观上的感受,简单分享一下,对于哪些做框架选型的时候,权当一个参考。主要参考的框架包括:codeigniter、cakephp、zendfra…

    数据库 2025年2月24日
    200
  • TP5之Cache的原理及使用

    在当今大流量的互联网之中,cache的重要性不言而喻。thinkphp5作为国内主流框架,提供了强大的cache功能。让我们跟随本文,来剖析tp5 cache的原理及使用。 为什么需要Cache(缓存)? 假设现在有一个小说网,有非常多的读…

    2025年2月24日 数据库
    200
  • 详解PHP使用redis队列实现电商订单自动确认收货

    php如何实现电商订单自动确认收货?今天小编就为大家带来php使用redis队列实现电商订单自动确认收货的知识。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望对大家有所帮助。 一、场景 之前做的电商平台,…

    数据库 2025年2月24日
    200
  • 180多个PHP常用函数总结

    我们知道任何有效的 php 代码都有可能出现在函数内部,甚至包括其它函数和类定义。本文我们主要和大家分享180多个PHP常用函数总结,希望能帮助大家更高效的学习PHP。 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2)…

    数据库 2025年2月24日
    200
  • 详谈php分布式部署

    本文我们接着和大家分享php分布式部署,希望大家对php分布式部署有一个更清晰的思路。 普通的Web开发,常用的模式就是用户登录之后,登录状态信息保存在Session中,用户一些常用的热数据保存在文件缓存中,用户上传的附件信息保存在Web服…

    2025年2月24日
    200
  • ThinkPHP项目实现分布式部署实例详解

      普通的web开发,常用的模式就是用户登录之后,登录状态信息保存在session中,用户一些常用的热数据保存在文件缓存中,用户上传的附件信息保存在web服务器的某个目录上。这种方式对于一般的web应用,使用很方便,完全能够胜任。但是对于高…

    2025年2月24日
    200
  • PHP和Redis实现高并发下注册人数统计

    现在越来越多的网站开始注重统计和用户行为分析,作为网站经常使用的功能,如何让统计性能更加高,这也是我们需要考虑的事情。本篇通过redis来优化统计功能(以注册人数统计为例)。本文主要为大家分享一篇php+redis 消息队列 实现高并发下注…

    数据库 2025年2月24日
    200
  • PHP使用Redis存储session时的一个Warning定位详解

    本文主要和大家介绍了php使用redis存储session时的一个warning定位,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 1. 问题现象 系统页面刷新的时候,偶尔会报错下面的Warnning,但是不经常出现…

    数据库 2025年2月24日
    200
  • 资深程序员告诉你如今的 PHP不一样

    php在全球市场占有率非常高,仅次于java,从各个招聘网站的数据上来看php开发的职位非常多,薪资水平也非常不错。实际在中小企业、互联网创业公司php的市场地位是高于java的。 PHP从诞生到现在已经有20多年历史,从Web时代兴起到移…

    数据库 2025年2月24日
    200

发表回复

登录后才能评论