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遍历目录viewDir函数
Dec 15 PHP
PHP 防恶意刷新实现代码
May 16 PHP
php基于session实现数据库交互的类实例
Aug 03 PHP
PHP简单判断手机设备的方法
Aug 23 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
PHP检测一个数组有没有定义的方法步骤
Jul 20 PHP
php依赖注入知识点详解
Sep 23 PHP
浅谈laravel框架与thinkPHP框架的区别
Oct 23 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
中国收音机工业发展史
2021/03/02 无线电
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
Python pip 常用命令汇总
2020/10/19 Python
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
不拖欠农民工工资承诺书
2014/03/31 职场文书
园艺师求职信
2014/04/27 职场文书
争先创优演讲稿
2014/09/15 职场文书
爱心募捐感谢信
2015/01/22 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
Python使用Kubernetes API访问集群
2021/05/30 Python
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS