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短域名转换为实际域名函数
Jan 17 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
php生成N个不重复的随机数实例
Nov 12 PHP
php 伪静态之IIS篇
Jun 02 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
php中如何执行linux命令详解
Nov 06 PHP
php文件后缀不强制为.php的实操方法
Sep 18 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
session 的生命周期是多长
2006/10/09 PHP
消息持续发送的完整例子
2006/10/09 PHP
php 保留字列表
2012/10/04 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
Linux机考试题
2015/07/17 面试题
自我鉴定写作要点
2014/01/17 职场文书
函授本科自我鉴定
2014/02/04 职场文书
感恩的演讲稿
2014/05/06 职场文书
化工实习心得体会
2014/09/09 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
Python如何用re模块实现简易tokenizer
2022/05/02 Python