又一个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 相关文章推荐
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 PHP
PHP实现多图片上传类实例
Jul 26 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
了解PHP的返回引用和局部静态变量
Jun 04 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
PHP会话处理的10个函数
Aug 11 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
Mar 29 PHP
PHP中大括号'{}'用法实例总结
Feb 08 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
Dec 12 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
Jun 03 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
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
python操作mysql代码总结
2018/06/01 Python
详解python中__name__的意义以及作用
2019/08/07 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
2014春晚主持词
2014/03/25 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
跑操口号
2014/06/12 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python