资讯专栏INFORMATION COLUMN

PHP冒泡排序

jimhs / 1895人阅读

摘要:冒泡排序对数组按从小到大进行排序得到结果比较,逻辑大致是这样的。

冒泡排序

对数组$arr = [1,7,5,3,3,2]按从小到大进行排序

$arr = [1,7,5,3,3,2];

function order($arr)
{
   $length = count($arr);
   for ($i=0;$i<$length-1;$i++)
   {
       for ($j=0;$j<$length-1-$i;$j++)
       if($arr[$j]>$arr[$j+1])
       {
           $temp = $arr[$j+1];
           $arr[$j+1] = $arr[$j];
           $arr[$j] = $temp;
       }
       else
       {
           break;
       }
   }
   return $arr;
}
var_dump(order($arr));
得到结果
array(6) {
  [0] =>
  int(1)
  [1] =>
  int(2)
  [2] =>
  int(3)
  [3] =>
  int(3)
  [4] =>
  int(5)
  [5] =>
  int(7)
}

比较,逻辑大致是这样的。

i=0的时候进行第一次冒泡

j=0=> 1-7比较,7比1大,不做改变 [1,7,5,3,3,2]

j=1=> 7-5比较,5比7小,交换位置 [1,5,7,3,3,2]

j=2=> 7-3比较,3比7小,交换位置 [1,5,3,7,3,2]

j=3=> 7-3比较,3比7小,交换位置 [1,5,3,3,7,2]

j=4=> 7-2比较,3比7小,交换位置 [1,5,3,3,2,7]

这样就进行了一次冒泡,得到了最大值 7

i=1的时候进行第二次冒泡

j=0=> 1-5比较,5比1大,不做改变 [1,5,3,3,2,7]

j=1=> 5-3比较,3比5小,交换位置 [1,3,5,3,2,7]

j=2=> 5-3比较,3比5小,交换位置 [1,3,3,5,2,7]

j=3=> 5-2比较,2比5小,交换位置 [1,3,3,2,5,7]

这样就进行了二次冒泡,得到了最大值 5

i=2的时候进行第三次冒泡

j=0=> 1-3比较,3比1大,不做改变 [1,3,3,2,5,7]

j=1=> 3-3比较,两个一样大,不做改变 [1,3,3,2,5,7]

j=2=> 3-2比较,2比3小,交换位置 [1,3,2,3,5,7]

这样就进行了三次冒泡,得到了最大值 3

i=3的时候进行第四次冒泡

j=0=> 1-3比较,3比1大,不做改变 [1,3,2,3,5,7]

j=1=> 3-2比较,2比3小,交换位置 [1,2,3,3,5,7]

这样就进行了四次冒泡,得到了最大值 3

i=4的时候进行第五次冒泡

j=0=> 1-2比较,2比1大,不做改变 [1,2,3,3,5,7]

这样就进行了五次冒泡,得到了最大值 2

文章参考 http://www.cnblogs.com/shen-hua/p/5422676.html

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29391.html

相关文章

  • PHP排序算法之冒泡排序

    摘要:一冒泡排序原理对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。通过以上五轮排序,若干次比较,我们有理由推断出一个结论对于一个长度为的数组,我们需要排序轮,每轮要比较次。 一、冒泡排序   原理:对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。 (以下都是升序排列,即从小到大排列)   举例说明: $arr = array(6, 3, 8,...

    Raaabbit 评论0 收藏0
  • PHP 实现冒泡排序

    摘要:导语冒泡排序是相对比较简单常用的算法,同时在面试中也是最常被问到的问题。冒泡排序对个项目需要的比较次数,且可以原地排序。冒泡排序算法的运作如下比较相邻的元素。 导语 冒泡排序是相对比较简单、常用的算法,同时在面试中也是最常被问到的问题。自认能力不够,不能有更深的理解,下面就把一些资料中的内容记录下来,文末有原文链接。 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序...

    genedna 评论0 收藏0
  • 比较排序算法(PHP

    摘要:总结比较排序算法都是空间复杂度为的原地排序算法,其中冒泡排序和插入排序两两比较不会交换相等的记录,所以这两种排序都是稳定排序,而选择排序只是记录最小值最后进行交换,所以会破坏相对顺序,选择排序不是稳定算法。 冒泡排序 两两比较相邻记录的关键字,如果反序则交换,大的数字往下沉,一直到最大的出现在数组最后 function swap(&$x, &$y) { $temp = $x; ...

    浠ラ箍 评论0 收藏0
  • PHP 快速排序算法

    摘要:概念这里借用百度百科的一张图来,非常形象快速排序算法是对冒泡算法的一个优化。获取已经打乱了顺序的数组快速排序这里引用的是我之前写的冒泡算法排序冒泡运行结果 概念 这里借用百度百科的一张图来,非常形象:showImg(https://segmentfault.com/img/bVdlR6); 快速排序算法是对冒泡算法的一个优化。他的思想是先对数组进行分割, 把大的元素数值放到一个临时数...

    Coly 评论0 收藏0
  • PHP面试:尽可能多的说出你知道的排序算法

    摘要:良好的排序算法具有进行最少的比较和交换的特征。冒泡排序是一个基于比较的排序算法,被认为是效率最低的排序算法之一。现在让我们使用实现冒泡排序算法。插入排序到目前为止,我们已经看到了两种基于比较的排序算法。 预警 本文适合对于排序算法不太了解的新手同学观看,大佬直接忽略即可。因为考虑到连贯性,所以篇幅较长。老铁们看完需要大概一个小时,但是从入门到完全理解可能需要10个小时(哈哈哈,以我自己...

    objc94 评论0 收藏0

发表评论

0条评论

jimhs

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<