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


Posted in PHP onDecember 07, 2015

本文实例分析了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+dbfile开发小型留言本
Oct 09 PHP
将数组写入txt文件 var_export
Apr 21 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
Laravel下生成验证码的类
Nov 15 PHP
php支付宝APP支付功能
Jul 29 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
PHP开发实现快递查询功能详解
Apr 08 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 PHP
PHP常用工具类大全附全部代码下载
Dec 07 #PHP
PHP+ajax分页实例简析
Dec 07 #PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 #PHP
php+ajax无刷新分页实例详解
Dec 07 #PHP
64位windows系统下安装Memcache缓存
Dec 06 #PHP
windows平台中配置nginx+php环境
Dec 06 #PHP
使用PHP实现下载CSS文件中的图片
Dec 06 #PHP
You might like
php实现把数组按指定的个数分隔
2014/02/17 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
js jquery做的图片连续滚动代码
2008/01/06 Javascript
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
对python3新增的byte类型详解
2018/12/04 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
python能做哪方面的工作
2020/06/15 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
医学生实习自荐信
2013/10/01 职场文书
大学生实习自我鉴定
2013/12/11 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
教师产假请假条范文
2014/04/10 职场文书
物流管理专业求职信
2014/05/29 职场文书
市场营销专业自荐书
2014/06/10 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
新入职员工工作总结
2015/10/15 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang