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

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

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

思想:

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

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

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

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

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

有这样一个数组:

$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 < count($arr)-1 ; $j++) { 
			if ($arr[$i] > $arr[$j+1]) {
 
				$data      = $arr[$i]; 
				$arr[$i]   = $arr[$j+1];
				$arr[$j+1] = $data; 
			}
		}
	}
 
	return $arr;
}
echo "<pre>";
print_r(BubbleSort($arr));

输出结果:

1.png

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →PHP函数之array数组函数视频讲解,快来学习吧!

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


PHP数组学习之使用冒泡算法对元素进行升序排序!
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除

下载声明:
  • 本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压;
  • 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。
  • 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版!
  • 版权声明:
  • 下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。
  • 免责声明:
  • 您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!