首先,冒泡排序是计算机科学领域中较简单的排序算法。在冒泡排序的过程中,按照要求从小到大排序或从大到小排序,不断比较数组中相邻两个元素的值,较小或较大的元素前移。
代码源如下:

<?phpfunction bubbleSort($arr){//外层循环控制需要比较的轮数for($i =1,$len = count($arr); $i < $len; ++$i){//内层循环控制参与比较的元素for($j = 0; $j < $len - $i; ++$j){//比较相邻的两个元素if($arr[$j] > $arr[$j + 1]){$temp = $arr[$j];$arr[$j] = $arr[$j + 1];$arr[$j +1] = $temp;
}
}
}
return $arr;
}$arr = [10,2,5,27,98,31];
print_r(bubble($arr));
?>

注解:第一层的for循环用于冒泡排序的轮数,第二次的for循环及if的代码用于循环比较数组中两个相邻的元素,如果当前一个元素大于后一个元素时,则通过if里的代码交换两个元素的值。编写完成后,调用函数bubbleSort(),将数组按照从小到大的顺序进行排序。

   注意:冒泡排序的效率很低,在实际中使用较少。学习冒泡排序,主要为了锻炼逻辑能力,但一般情况下,不建议使用它。

PHP 冒泡排序相关推荐

  1. PHP算法题:如何实现冒泡排序

    算法原理: 1.比较相邻的元素,如果第一个比第二个大,那么就交换这两个元素. 2.对每一对相邻元素做同样的工作,从第一对开始到最后一对结束,最后的元素应该会是最大的数. 3.除了最后一个元素外,针对其 ...

  2. C#基础——数组(冒泡排序)

    数组 所谓数组,就是相同数据类型的元素按一定的顺序的集合,就是把有限个类型相同的变量用一个名字来命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的分量 ...

  3. python实现冒泡排序完整算法_Python实现冒泡排序算法的完整实例

    冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后 ...

  4. 为什么双层循环 冒泡排序_冒泡排序的双重循环理解

    主要说一下冒泡排序的一些关键地方的个人理解,比如算法思想,两个循环的作用意义,中间循环变量范围的确定等. 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面 ...

  5. 排序 时间倒序_经典排序算法之冒泡排序(Bubble Sort)

    冒泡排序 ( Bubble Sort ) 冒泡排序,正如它的名字一样,未排序数组中的最大(小)值会依次往上浮.冒泡排序主要有两个基本步骤:相邻元素之间的比较 和 交换位置. 步骤分析: 令待排序序列为 ...

  6. Equalizing Two Strings 冒泡排序or树状数组

    首先考虑排序后相等 如果排序后相等的话就只考虑reverse长度为2的,所以a或者b排序后存在相邻两个字母相等的话就puts YES,n>26也直接puts YES 不然的话就假设c为a,b排完 ...

  7. java冒泡排序_Java中的经典算法之冒泡排序(Bubble Sort)

    原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将 ...

  8. python冒泡排序与常用数学计算

    一 .冒泡排序: 冒泡排序: 属于交换排序; 两两比较大小,交换位置,如同水泡大的往上(右)跑; n个数从左至右编号从0到n-1,索引0和1比较,如果索引0大,则交换两者位置; 如果索引1大则不用交换 ...

  9. Console-算法-冒泡排序法|倒水法

    ylbtech-Arithmetic:Console-算法-冒泡排序法|倒水法 1.A,案例 -- ================================================== ...

  10. java 冒泡排序和快速排序 实现

    面试的时候经常会遇到面试官让你直接手写排序算法,下面是冒泡排序和快速排序的实现. 冒泡排序 基本流程就是,自下而上比较相邻的两个元素进行比较,让大的元素往下面沉,较小的往上冒.按照排序规则进行比较,如 ...

最新文章

  1. 说说消息队列RocketMQ版ConsumeTimeout的含义是什么
  2. 获取某个元素相对于视窗的位置-getBoundingClientRect
  3. 在Ubuntu虚拟机中安装VMware tools异常中断
  4. 在 ASP.NET 上实现锁定表头、支持滚动的表格的做法
  5. ICO的“金三角”与区块链的“新大陆”
  6. sql php修改mysql结构_sql怎么修改表内容
  7. 将ABAP On-Premises系统连接到中央检查系统以进行自定义代码迁移
  8. 利用卷积神经网络实现人脸识别(python+TensorFlow)
  9. 全网首发Oreo易支付开源+教程
  10. Spring Boot 2 快速教程:WebFlux Restful CRUD 实践(三)
  11. IPv6隧道技术基础知识
  12. 基于R实现统计中的检验方法---卡方检验
  13. Crossoft Minesweeper Hexagon for Mac
  14. iTerm2安装Zmodem工具支持rz和sz命令
  15. 机器学习-决策树算法
  16. Keep不甘做“工具人”
  17. 计算机考研英语是英语一还是英语二,考研英语一是不是很难
  18. aspen如何确定塔板数_Aspen中有关回流比、塔板数、进料板位置等灵敏度分析作用...
  19. RoCE网络技术和实现方式
  20. eBPF动手实践系列一:解构内核源码eBPF样例编译过程

热门文章

  1. 基于TC275的电机控制器
  2. arcgis制作OD图
  3. 你不够优秀,因为你不够孤独
  4. vue 拼接html,vue.js中怎么拼接字符串?
  5. 阿里巴巴矢量图标库导入到自己的项目中
  6. pytorch下搭建网络训练并保存模型
  7. php、tp 获取url链接内容
  8. 货币政策对于股市涨跌影响
  9. Vmware 15 新建虚拟机黑屏
  10. 网站服务器改ip 6,ipv6服务器如何设置