PHP的简易冒泡法代码分享


Posted in PHP onAugust 28, 2012

很基础的东西,感觉代码还不够简洁,希望高手指导修改

<?php 
function BubbleSort($str){ 
for($i=0;$i<count($str);$i++){//从数组末尾取一个值; 
for ($k=count($str)-2;$k>=$i;$k--){//将这个值向前冒泡; 
if($str[$k+1]<$str[$k]){ //将小于号改为大于号,就是降序排列; 
$tmp=$str[$k+1]; 
$str[$k+1]=$str[$k]; 
$str[$k]=$tmp; 
} 
} 
} 
return $str; 
} 
//以下是测试 
$str=array(5,8,2,6,10,0,3,12,11); 
print_r(BubbleSort($str)); 
?>

php 冒泡排序2
基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第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。

<?php 
function asc($a) 
{ 
for($i=0;$i<count($a)-1;$i++) 
{ 
for($j=0;$j<count($a)-1;$j++) 
{ 
if($a[$j]>$a[$j+1]) 
{ 
$tmp=$a[$j+1]; 
$a[$j+1]=$a[$j]; 
$a[$j]=$tmp; 
} 
} 
} 
print_r($a); 
} 
$a = array(9,8,17,6,26,4,33,2,1); 
print_r(asc($a)); 
?> 
<br /> 
<?php 
function desc($a) 
{ 
$c=array(); 
for($i=count($a)-1;$i>0;$i--) 
{ 
for($j=0;$j<count($a)-1;$j++) 
{ 
if($a[$j]<$a[$j+1]) 
{ 
$tmp=$a[$j+1]; 
$a[$j+1]=$a[$j]; 
$a[$j]=$tmp; 
} 
} 
} 
print_r($a); 
} 
$arr=array(33,24,56,55,59); 
desc($arr); 
?> 

PHP冒泡排序法演示
以前面试的时候考官出的笔试题,觉得比较XX,写程序应该是在计算机上面,而不是在笔头上。
PHP程序文件sort_bubble_up.php
<html> 
<head><title>冒泡排序法演示</title><head> 
<link rel="stylesheet" href="sort.css"> 
<body> 
<h1>冒泡排序法演示</h1> 
<table cellpadding="5" cellspacing="1" border="0" align="center"> 
<?php 
//随机生成数组 
$arr=array(); 
echo '<tr><td colspan="10" class="title">初始值</td></tr>'; 
echo '<tr>'; 
for($i=0;$i<10;$i++){ 
$arr[$i]=rand(); 
echo "<td>\$arr[$i]={$arr[$i]}</td>"; 
} 
//进行冒泡法排序 
for($i=9;$i>0;$i--){ 
echo '<tr><td colspan="10" class="title">第'.(10-$i).'次</td></tr>'; 
for($j=0;$j<$i;$j++){ 
if($arr[$j]<$arr[$j+1]){ 
$tmp=$arr[$j]; 
$arr[$j]=$arr[$j+1]; 
$arr[$j+1]=$tmp; 
} 
echo '<tr>'; 
for($k=0;$k<10;$k++){ 
switch($k){ 
case $j : echo '<td class="base">'; break; 
case $j+1 : echo '<td class="light">'; break; 
default : echo '<td>'; 
} 
echo "\$arr[$k]={$arr[$k]}</td>"; 
} 
echo '</tr>'; 
} 
} 
//显示排序结果 
echo '<tr><td colspan="10" class="title">结果</td></tr>'; 
echo '<tr>'; 
for($i=0;$i<10;$i++){ 
echo "<td>\$arr[$i]={$arr[$i]}</td>"; 
} 
echo '</tr>'; 
?> 
</table> 
</body></html>

样式表文件sort.css
h1{text-align: center; color: blue;} 
table{font-size: 12px; font-family: arial; background-color: black; text-align: center;} 
td{background-color: white;} 
.base{background-color: #0FF;} 
.light{background-color: #0DD;} 
.title{background-color: #3FF; text-align: center;}
PHP 相关文章推荐
PHP简单系统查询模块代码打包下载
Jun 07 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
Jun 24 PHP
使用Yii2实现主从数据库设置
Nov 20 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP+jQuery实现即点即改功能示例
Feb 21 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 PHP
浅谈如何提高PHP代码质量之单元测试
May 28 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 #PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 #PHP
PHP 图片水印类代码
Aug 27 #PHP
PHP setTime 设置当前时间的代码
Aug 27 #PHP
PHP 透明水印生成代码
Aug 27 #PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 #PHP
php实现快速排序法函数代码
Aug 27 #PHP
You might like
PHP 文件上传功能实现代码
2009/06/24 PHP
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
php接口隔离原则实例分析
2019/11/11 PHP
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
JavaScript生成简单等差数列
2017/11/28 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
Python 元类使用说明
2009/12/18 Python
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
介绍一下linux的文件权限
2012/02/15 面试题
2014新年元旦活动策划方案
2014/02/18 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
关于安全的广播稿
2014/10/23 职场文书
瘦西湖导游词
2015/02/03 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL