php冒泡排序算法代码示例

发布时间:2020-03-23编辑:脚本学堂
有关php冒泡排序算法的实现代码,php数组排序的经典算法就是冒泡排序了,分享一段php冒泡排序代码,感兴趣的朋友参考下。

例子,php 冒泡排序代码
 

复制代码 代码示例:

<?php
//php数组
$a=array('3','8','1','4','11','7');
print_r($a);
$len = count($a);

//从小到大
for($i=1;$i<$len;$i++)
{
for($j=$len-1;$j>=$i;$j--)
if($a[$j]<$a[$j-1])
{
 //如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了
 $x=$a[$j];
 $a[$j]=$a[$j-1];
 $a[$j-1]=$x;
}
}
print_r($a);j
//方法2 从小到大
$b=array('4','3','8','9','2','1');
$len=count($b);
for($k=1;$k<$len;$k++)
{
for($j=$len-1,$i=0;$i<$len-$k;$i++,$j--)
if($b[$j]<$b[$j-1]){
//如果是从大到小,只要判断改成if($b[$j]>$b[$j-1])
 $tmp=$b[$j];
 $b[$j]=$b[$j-1];
 $b[$j-1]=$tmp;
}
print_r($b);
echo "<br>";
}
//以下执行效率更高
function maopao($arr)
{
 $len = count($arr);
 for($i=1; $i<$len; $i++)//最多做n-1趟排序
 {
  $flag = false;    //本趟排序开始前,交换标志应为假
  for($j=$len-1;$j>=$i;$j--)
  {
   if($arr[$j]<$arr[$j-1])//交换记录
   {//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了
     $x=$arr[$j];
     $arr[$j]=$arr[$j-1];
     $arr[$j-1]=$x;
     $flag = true;//发生了交换,故将交换标志置为真
   }
  }
  if(! $flag)//本趟排序未发生交换,提前终止算法
  return $arr;  
 }
}

//php冒泡排序 示例
$shuz = array('2','4','1','8','5');
$bb = maopao($shuz);
print_r($bb);
?>