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
在任意字符集下正常显示网页的方法一
Apr 01 PHP
用PHP进行MySQL删除记录操作代码
Jun 07 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
Oct 03 PHP
5种PHP创建数组的实例代码分享
Jan 17 PHP
PHP.vs.JAVA
Apr 29 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
Jul 28 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
Laravel5.1 框架路由基础详解
Jan 04 PHP
PHP内存溢出优化代码详解
Feb 26 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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
php常用表单验证类用法实例
2015/06/18 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
Python性能优化技巧
2015/03/09 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
python 进程的几种创建方式详解
2019/08/29 Python
浅谈Python_Openpyxl使用(最全总结)
2019/09/05 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
行政助理的职责
2013/11/14 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
2014全国两会心得体会
2014/03/17 职场文书
精彩的广告词
2014/03/19 职场文书
检举信的格式及范文
2014/04/04 职场文书
古诗之感恩老师
2019/10/24 职场文书