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 相关文章推荐
?繁体转换的class
Oct 09 PHP
php 图像函数大举例(非原创)
Jun 20 PHP
php学习笔记 数组遍历实现代码
Jun 09 PHP
PHP反射机制用法实例
Aug 28 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP+Ajax实时自动检测是否联网的方法
Jul 01 PHP
php中array_multisort对多维数组排序的方法
Jun 21 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
phpinfo的知识点总结
Oct 10 PHP
laravel框架使用极光推送消息操作示例
Feb 15 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 MessagePack介绍
2013/10/06 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
利用node.js开发cli的完整步骤
2020/12/29 Javascript
python正则表达式抓取成语网站
2013/11/20 Python
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
志愿者宣传口号
2014/06/17 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
三国演义读书笔记
2015/06/25 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript