又一个PHP实现的冒泡排序算法分享


Posted in PHP onAugust 21, 2014

经典的冒泡排序法一直是许多程序沿用的其中一种排序法,话说冒泡排序法在效率上比PHP系统函数sort更高效。本章不讨论性能,所以就不拿它来跟系统性能做对比了。

冒泡排序大概的意思是依次比较相邻的两个数,然后根据大小做出排序,直至最后两位数。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。但其实在实际过程中也可以根据自己需要反过来用,大树往前放,小数往后放。

<?php
/**
 * PHP中的冒泡排序法使用
 */
 
// 预先声明一个数组
$arr = array (12,45,28,30,88,67);
echo "原数组";
print_r($arr);
echo "<br/>";
//冒泡排序
function maopao($arr){
  // 进行第一层遍历
  for($i=0,$k=count($arr);$i<$k;$i++) {
    // 进行第二层遍历 将数组中每一个元素都与外层元素比较
    // 这里的i+1意思是外层遍历当前元素往后的
    for ($j=$i+1;$j<$k;$j++) {
      // 内外层两个数比较
        if($arr[$i]<$arr[$j]){
        // 先把其中一个数组赋值给临时变量
          $temp = $arr[$j];
        // 交换位置
        $arr[$j] = $arr[$i];
        // 再从临时变量中赋值回来
        $arr[$i] = $temp;
      }
    }
  }
  // 返回排序后的数组
  return $arr;
}
 
// 直接打印排序后的数组
echo '排序后';
print_r(maopao($arr));
 
?>

通过以上代码执行结果

原数组

Array ( [0] => 12 [1] => 45 [2] => 28 [3] => 30 [4] => 88 [5] => 67 )

排序后
Array ( [0] => 88 [1] => 67 [2] => 45 [3] => 30 [4] => 28 [5] => 12 )

这就是冒泡法实例,简单吧!没有神马难度的。
PHP 相关文章推荐
PHP 八种基本的数据类型小结
Jun 01 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
Sep 06 PHP
Java和PHP在Web开发方面对比分析
Mar 01 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
PHP编写简单的App接口
Aug 28 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 #PHP
个人写的PHP验证码生成类分享
Aug 21 #PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 #PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 #PHP
ThinkPHP登录功能的实现方法
Aug 20 #PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 #PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 #PHP
You might like
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
JS正则中的RegExp对象对象
2012/11/07 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
最新教师自我评价分享
2013/11/12 职场文书
高中地理教学反思
2014/01/29 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
公司节能减排方案
2014/05/16 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
受资助学生感谢信
2015/01/21 职场文书
医学生自荐信范文
2015/03/05 职场文书
成事在人观后感
2015/06/16 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers