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
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
php函数serialize()与unserialize()用法实例
Nov 06 PHP
cakephp打印sql语句的方法
Feb 13 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
php分享朋友圈的实现代码
Feb 18 PHP
php中yar框架实例用法讲解
Dec 27 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
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
2018/02/02 jQuery
vue中如何使用ztree
2018/02/06 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
python 串行执行和并行执行实例
2020/04/30 Python
Django使用rest_framework写出API
2020/05/21 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
化工机械应届生求职信
2013/11/04 职场文书
大学校运会广播稿
2014/02/03 职场文书
教学个人的自我评价分享
2014/02/16 职场文书
企业宣传口号
2014/06/12 职场文书
关于教师节的广播稿
2014/09/10 职场文书
运动会通讯稿600字
2015/07/20 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技