加入收藏 | 设为首页 | 会员中心 | 我要投稿 黄山站长网 (https://www.0559zz.com.cn/)- 迁移、建站、智能边缘、云容器引擎、数据快递!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php冒泡排序与快速排序实例详解

发布时间:2022-07-16 10:55:56 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了php冒泡排序与快速排序实现方法,结合实例形式较为详细的分析了phpphp排序算法的递归、遍历运算及流程控制的相关技巧,需要的朋友可以参考下,本文实例分析了php冒泡排序与快速排序算法,分享给大家供大家参考,具体如下: $a=array(3,8,1,4
  这篇文章主要介绍了php冒泡排序与快速排序实现方法,结合实例形式较为详细的分析了phpphp排序算法的递归、遍历运算及流程控制的相关技巧,需要的朋友可以参考下,本文实例分析了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
  //另一种方法 从小到大
  $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 "
  ";
  }
  //下面的这个执行效率更高
  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;   
   }
  }
  $shuz = array('2','4','1','8','5');
  $bb = maopao($shuz);
  print_r($bb);
  // 快速排序
  function kuaisu($arr){
    $len = count($arr);
    if($len <= 1){
      return $arr;
    }
    $key = $arr[0];
    $left_arr = array();
    $right_arr = array();
    for($i=1; $i<$len;$i++){
      if($arr[$i] <= $key){
        $left_arr[] = $arr[$i];
      }else{
        $right_arr[] = $arr[$i];
      }
    }
    $left_arr = kuaisu($left_arr);
    $right_arr = kuaisu($right_arr);
    return array_merge($left_arr, array($key), $right_arr);
  }
  $arr = array(23,98,54,2,9,62,34);
  print_r(kuaisu($arr));
  希望本文所述对大家php程序设计有所帮助。
 
 

(编辑:黄山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读