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 相关文章推荐
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
探讨PHP中this,self,parent的区别详解
Jun 08 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 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的特殊设置
2006/10/09 PHP
ajax在joomla中的原生态应用代码
2012/07/19 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
万能的php分页类
2017/07/06 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
python多重继承实例
2014/10/11 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
Pycharm更换python解释器的方法
2018/10/29 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
送温暖献爱心活动总结
2014/07/08 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
图解上海144收音机
2021/04/22 无线电
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js