php冒泡排序

sisophon 2019-09-30 PM 16℃ 0条

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

原理:

a.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

b.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

c.针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

冒泡排序理解起来是最简单,但是时间复杂度(O(n^2))也是最大的之一,实现代码如下:

$arr=array(5,4,2,3,8);
$len=count($arr);
//设置一个空数组 用来接收冒出来的泡
//该层循环控制 需要冒泡的轮数
for($i=1;$i<$len;$i++)
{ //该层循环用来控制每轮 冒出一个数 需要比较的次数
   for($k=0;$k<$len-$i;$k++)
   {
       if($arr[$k]>$arr[$k+1])
       {
           $tmp=$arr[$k+1];
           $arr[$k+1]=$arr[$k];
           $arr[$k]=$tmp;
       }
   }
   
 }
 print_r($arr);

总共5个数,比较4轮,每轮比较次数是总数减去比较的轮数:

第一轮:

第一次比较 5和4比较 结果:4 5 2 3 8

第二次比较 5和2比较 结果:4 2 5 3 8

第三次比较 5和3比较 结果:4 2 3 5 8

第四次比较 5和8比较 结果:4 2 3 5 8

以此类推 ……

最终得到结果2 3 4 5 8

标签: PHP

非特殊说明,本博所有文章均为博主原创。

上一篇 php代码片段
下一篇 php选择排序

评论啦~