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中用foreach来操作数组的代码
Jul 17 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 PHP
在yii中新增一个用户验证的方法详解
Jun 20 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
php 输入输出流详解及示例代码
Aug 25 PHP
php文件上传、下载和删除示例
Aug 28 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
PHP中SESSION过期设置
Mar 09 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 fread()使用技巧
2010/01/22 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
php上传图片类及用法示例
2016/05/11 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
python实现2048小游戏
2015/03/30 Python
Python开发的HTTP库requests详解
2017/08/29 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
django框架auth模块用法实例详解
2019/12/10 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
django迁移文件migrations的实现
2020/03/31 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
python 装饰器的使用示例
2020/10/10 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
检察院起诉书
2015/05/20 职场文书
孔繁森观后感
2015/06/10 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis