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动态变静态原理
Nov 25 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
php生成略缩图代码
Jul 16 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
用php守护另一个php进程的例子
Feb 13 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 PHP
Laravel框架实现调用百度翻译API功能示例
May 30 PHP
php常用的工具开发整理
Sep 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
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
php ftp文件上传函数(基础版)
2010/06/03 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
JavaScript中的类型检查
2020/02/03 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python实现多线程HTTP下载器示例
2017/02/11 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
Python阶乘求和的代码详解
2020/02/14 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
浅谈django channels 路由误导
2020/05/28 Python
Python读写Excel表格的方法
2021/03/02 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
十佳大学生村官事迹
2014/01/09 职场文书
小学生检讨书大全
2014/02/06 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS