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文件操作实现代码分享
Sep 01 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
php生成shtml类用法实例
Dec 09 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
php如何实现只替换一次或N次
Oct 29 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
Dec 10 PHP
ZendFramework2连接数据库操作实例
Apr 18 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
php 问卷调查结果统计
2015/10/08 PHP
JavaScript Eval 函数使用
2010/03/23 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
Python实现自动登录百度空间的方法
2017/06/10 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
python使用epoll实现服务端的方法
2018/10/16 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
C#笔试题集合
2013/06/21 面试题
Java编程面试题
2016/04/04 面试题
怎样写留学自荐信
2013/11/11 职场文书
房屋委托书范本
2014/04/04 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
求职自我评价参考范文
2019/05/16 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python