PHP 冒泡排序算法的实现代码


Posted in PHP onAugust 08, 2010

基本概念

冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1 个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复 9,8,…,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,…,9,对于每一个i, j的值依次为1,2,…10-i。

产生
在许多程序设计中,我们需要将一个数列进行排序,以方便统计,常见的排序方法有冒泡排序,二叉树排序,选择排序等等。而冒泡排序一直由于其简洁的思想方法和比较高的效率而倍受青睐。

排序过程
设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上”漂浮”,如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。

Update 2009-8-18: 更新代码的错误。

$arr = array(345,4,17,6,52,16,58,69,32,8,234); 
for($i=1;$i<count($arr);$i++){ 
for($j=count($arr)-1;$j>=$i;$j--){ 
if($arr[$j]<$arr[$j-1]){ 
$temp = $arr[$j-1]; 
$arr[$j-1] = $arr[$j]; 
$arr[$j] = $temp; 
} 
} 
}

请使用PHP实现冒泡排序,将数组$a = array()按照从小到大的方式进行排序

$a=array('3','8','1','4','11','7'); 
 print_r($a); 
 echo '<br/>'; 
 $len=count($a); 
 //从小到大 
 for($i=1;$i<$len;$i++){ 
 for($j=$len-1;$j>=$i;$j--){ 
 if($a[$j]<$a[$j-1]){ 
 $x=$a[$j];
  $a[$j]=$a[$j-1]; 
 $a[$j-1]=$x; 
 } 
} 
}

PHP 简单实现冒泡排序

学习PHP的时候不敢往算法上靠近。就是怕扰乱自己的思想,现在回顾一下也还真的就那一回事。嘿嘿!各位有没有遇到这样子的情况呢?

<?php
#冒泡排序法
$arr = array(12,45,89,3,24,55,223,76,22,11,89,2,4,5,28,112,20,434,23,65,65,765,6,8,23,5,33,553,45,423,64,77,84,23);
$tmp;
for($i=0;$i<count($arr)-1;$i++ ){    
  for($j=0;$j<count($arr)-1-$i;$j++){ 
    if($arr[$j] > $arr[$j+1]){
      $tmp = $arr[$j];
      $arr[$j] = $arr[$j+1];
      $arr[$j+1] = $tmp;
    } 
  }
} 
print_r($arr);

php冒泡排序

$b=array('4','3','8','9','2','1');
$len=count($b);//6

第一种:

for($k=0;$k<=$len;$k++)
{
  for($j=$len-1;$j>$k;$j--){
    if($b[$j]<$b[$j-1]){
      $temp = $b[$j];
      $b[$j] = $b[$j-1];
      $b[$j-1] = $temp;
    }
  }
}

第二种:

for($k=1;$k<$len;$k++)
{
  for($j=0;$j<$len-$k;$j++){
    if($b[$j]>$b[$j+1]){
      $temp =$b[$j+1];
      $b[$j+1] =$b[$j] ;
      $b[$j] = $temp;
    }
  }
}
PHP 相关文章推荐
杏林同学录(五)
Oct 09 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
PHPMyAdmin 快速配置方法
May 11 PHP
PHP 基本语法格式
Dec 15 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
php获取目标函数执行时间示例
Mar 04 PHP
PHP实现事件机制实例分析
Jun 26 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
php写入txt乱码的解决方法
Sep 17 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
Dec 16 PHP
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 #PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 #PHP
PHP下escape解码函数的实现方法
Aug 08 #PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 #PHP
PHP MemCached高级缓存配置图文教程
Aug 05 #PHP
PHP Array交叉表实现代码
Aug 05 #PHP
php垃圾代码优化操作代码
Aug 05 #PHP
You might like
分享下php5类中三种数据类型的区别
2015/01/26 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
超清晰的document对象详解
2007/02/27 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
python3.7 sys模块的具体使用
2019/07/22 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
历史学专业毕业生求职信
2013/09/27 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
爱护公共设施的标语
2014/06/24 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
黄山导游词
2015/01/31 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
检讨书怎么写
2015/05/07 职场文书
单位提档介绍信
2015/10/22 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
HTML+CSS实现导航条下拉菜单的示例代码
2021/08/02 HTML / CSS