又一个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递归列出所有文件和目录的代码
Sep 10 PHP
php数组总结篇(一)
Sep 30 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
PHPEXCEL 使用小记
Jan 06 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
php设计模式之命令模式使用示例
Mar 02 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
PHP多进程编程实例
Oct 15 PHP
PHP访问Google Search API的方法
Mar 05 PHP
thinkphp3.2.3 分页代码分享
Jul 28 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 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 Switch 语句之学习笔记
2013/09/21 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
php的4种常用运行方式详解
2016/12/22 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Flask框架信号用法实例分析
2018/07/24 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
基于python使用tibco ems代码实例
2019/12/20 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
写出二分查找算法的两种实现
2013/05/13 面试题
建筑设计师岗位职责
2013/11/18 职场文书
数学专业推荐信范文
2013/11/21 职场文书
后勤主管工作职责
2013/12/07 职场文书
施工安全承诺书
2014/05/22 职场文书
开票员岗位职责
2015/02/12 职场文书
捐款通知怎么写
2015/04/24 职场文书
2016关于军训的心得体会
2016/01/11 职场文书