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

 更新时间:2015年12月07日 09:55:23   作者:流星飞雨  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • PHP根据图片色界在不同位置加水印的方法

    PHP根据图片色界在不同位置加水印的方法

    这篇文章主要介绍了PHP根据图片色界在不同位置加水印的方法,可实现图片水印根据颜色环境的动态添加功能,需要的朋友可以参考下
    2015-07-07
  • php中foreach结合curl实现多线程的方法分析

    php中foreach结合curl实现多线程的方法分析

    这篇文章主要介绍了php中foreach结合curl实现多线程的方法,结合实例形式分析了foreach语句结合curl循环调用模拟多线程的原理与实现技巧,需要的朋友可以参考下
    2016-09-09
  • PHP数组基本用法与知识点总结

    PHP数组基本用法与知识点总结

    这篇文章主要介绍了PHP数组基本用法与知识点,总结整理了PHP数组基本概念、用法、定义、访问、删除等相关操作技巧,需要的朋友可以参考下
    2020-06-06
  • php+redis实现注册、删除、编辑、分页、登录、关注等功能示例

    php+redis实现注册、删除、编辑、分页、登录、关注等功能示例

    这篇文章主要介绍了php+redis实现注册、删除、编辑、分页、登录、关注等功能,结合实例形式分析了php+redis项目开发中常用的注册,删除,编辑,分页,登录,关注功能相关实现技巧,需要的朋友可以参考下
    2017-02-02
  • php实现推荐功能的简单实例

    php实现推荐功能的简单实例

    在本篇文章里小编给各位整理的是关于php如何实现推荐功能的相关实例内容,有兴趣的朋友们可以学习下。
    2019-09-09
  • PHP防CC攻击实现代码

    PHP防CC攻击实现代码

    所谓的CC攻击就是对方利用程序或一些代理对您的网站进行不间断的访问,造成您的网站处理不了而处于当机状态
    2011-12-12
  • php提交post数组参数实例分析

    php提交post数组参数实例分析

    这篇文章主要介绍了php提交post数组参数的用法,结合实例分析了php使用post进行参数提交的相关技巧,需要的朋友可以参考下
    2015-12-12
  • PHP面向对象程序设计之类常量用法实例

    PHP面向对象程序设计之类常量用法实例

    这篇文章主要介绍了PHP面向对象程序设计之类常量用法,是PHP面向对象程序设计中非常重要的一个概念,对于PHP初学者来说更是有必要加以牢固掌握,需要的朋友可以参考下
    2014-08-08
  • php懒人函数 自动添加数据

    php懒人函数 自动添加数据

    php懒人函数 自动添加数据,需要的朋友可以参考下。
    2011-06-06
  • PHP动态创建Web站点的方法

    PHP动态创建Web站点的方法

    在这一篇中我写了一些动态创建Web站点的一些内容,例如黏性表单、发送电子邮件、日期函数等。希望能对大家有所帮助,别忘了好评哦。
    2011-08-08

最新评论