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 相关文章推荐
PHP个人网站架设连环讲(一)
Oct 09 PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 PHP
php ss7.5的数据调用 (笔记)
Mar 08 PHP
php中批量替换文件名的实现代码
Jul 20 PHP
深入PHP运行环境配置的详解
Jun 04 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
PHP长连接实现与使用方法详解
Feb 11 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
一个简单的PHP投票程序源码
2007/03/11 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
js实现图片轮播效果学习笔记
2017/07/26 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
Python计算回文数的方法
2015/03/11 Python
Python 功能和特点(新手必学)
2015/12/30 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
python and or用法详解
2019/06/26 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
2015年学校党建工作总结
2015/05/19 职场文书
同意离婚答辩状
2015/05/22 职场文书
机关工会工作总结2015
2015/05/26 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书