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 动态执行带有参数的类方法
Apr 10 PHP
在PHP中养成7个面向对象的好习惯
Jul 17 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
PHP 第一节 php简介
Apr 28 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
使用PHP进行微信公众平台开发的示例
Aug 21 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
Mar 28 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 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 检查扩展库或函数是否可用的代码
2010/04/06 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
PHP反射基础知识回顾
2020/09/10 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python多层装饰器用法实例分析
2018/02/09 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
Python如何生成xml文件
2020/06/04 Python
python中的yield from语法快速学习
2020/11/06 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
师德师风自我评价范文
2014/09/11 职场文书
一般党员对照检查材料
2014/09/24 职场文书
电话营销开场白
2015/05/29 职场文书
2016年五一促销广告语
2016/01/28 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers
详解MySQL的内连接和外连接
2023/05/08 MySQL