• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

简单的理解PHP冒泡排序

php 搞代码 3年前 (2022-01-22) 20次浏览 已收录 0个评论

PHP中涉及到多种排序,而冒泡排序应该是我用的最闹心的一种排序,弄了老半天还是没太懂,这篇简单讲述PHP冒泡排序的很适合像我一样不太懂冒泡排序的东西看哦!

1.冒泡算法

看了几篇关于冒泡的文章,但是总是对于每次循环的边界值思路讲的比较笼统。

不是很容易被新手记住,我自己平时也是硬记下来的。

但是对于算法,硬记,时间长了还是容易忘记,所以自己写了一次,把每次思路尽量写下来,便于理解,理解了容易加深映像,不容易忘记了。

冒泡算法,核心就是

1.循环比对 每次比对相邻2个数组的大小,然后把最大的数组放到后面,这样所有比对循环一次,就会把数组中最大的数放到数组最后

2. 然后重复循环(重复上面的比对循环):此时循环的时候 最后一个值是不需要参加循环了,因为已经确定是最大的那个了。也就是说,重复循环,比对数组越来越少。最终只剩一个数组元素了。循环结束

代码层看:

$arr=array(5,4,3,6,7,1,2,10,8,9);

先从两两比对开始看

if($arr[$i]>$arr[$i+1]){//相邻比较 这个应该比较容易理解吧        $tem=$arr[$i];        $arr[$i]=$arr[$i+1];        $arr[$i+1]=$tem;    }

以上代码就是比对2个数组相邻的值大小,大的放后面。可以看出来 $i 最大就是数组索引前一位的,否则 $arr[$i+1]不存在了,无法比较。也就是说 $i<count($ar)-1;$i初始值为0

先从内层比对循环开始看

一般for循环 这么写

for($i=0;$i<$xx;$i++){    if($arr[$i<a style="color:transparent">、本文来源gao($daima.com搞@代@#码$网</a><big>搞gaodaima代码</big>]>$arr[$i+1]){//相邻比较 这个应该比较容易理解吧        $tem=$arr[$i];        $arr[$i]=$arr[$i+1];        $arr[$i+1]=$tem;    }} 

上面思路说了,每次比对循环都是从开头第一个元素开始 所以$i 起始值为0, 重复循环一次,下次循环就少比对一个元素。这里$xx要越来越小; 那这个$xx怎么确定呢?

$xx第一次循环值是多少 ?上面两两比对得出结论 count($ar)-1

$xx 最后一次值该是多少呢?上面两两比对得出结论 是1。

也就是说 $xx 为 count($arr)-$k $k是累加的 比对循环可改为(重复循环每循环一次)

for($i=0;$i<count($arr)-$k;$i++){    if($arr[$i]>$arr[$i+1]){//相邻比较        $tem=$arr[$i];        $arr[$i]=$arr[$i+1];        $arr[$i+1]=$tem;    }} 

再看这个$k 想想这个$k不就是随着重复循环在累增的吗? 把重复循环代码加上如下

我们再来看下$k是怎么确定边界值的 上面说了, $xx 边界值是 count($arr)-1 到 1 已经定义 那么数学算法 $k边界值也就出来了 为 1到 count($arr)-1

写入到循环里也就是 $k=1;$k<count($arr);$k++了。

整理下就是

for($k=1;$k<count($arr);$k++){    for($i=0;$i<count($arr)-$k;$i++){         if($arr[$i]>$[$i+1]){            $temparr= $arr[$i];            $arr[$i] =$arr[$i+1];            $arr[$i+1] = $temparr;        }    }}

希望大家可以看的懂,还是多练练比较好,有的时候我们不明白的知识,自己多写两遍写着写着就懂了!

以上就是简单的理解PHP冒泡排序的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:简单的理解PHP冒泡排序

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址