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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
我的群发邮件程序
Oct 09 PHP
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
附件名前加网站名
Mar 23 PHP
PHP中去掉字符串首尾空格的方法
May 19 PHP
php牛逼的面试题分享
Jan 18 PHP
PHP中比较时间大小实例
Aug 21 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
PHP生成短网址方法汇总
Jul 12 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 PHP
PHP变量的作用范围实例讲解
Dec 22 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中获取时间的下一周下个月的方法
2014/03/18 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
轻松创建nodejs服务器(2):nodejs服务器的构成分析
2014/12/18 NodeJs
coffeescript使用的方式汇总
2015/08/05 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
Python深入学习之内存管理
2014/08/31 Python
理解Python中的类与实例
2015/04/27 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
python实现连连看游戏
2020/02/14 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
德国机车企业:FC-Moto
2017/10/27 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
保密承诺书
2014/03/27 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
教师节寄语2015
2015/03/23 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python