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

5年以前  |  阅读数:303 次  |  编程语言: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
    //另一种方法 从小到大
    $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程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例