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 flush类输出缓冲剖析
Oct 19 PHP
php 破解防盗链图片函数
Dec 09 PHP
php 设计模式之 单例模式
Dec 19 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
php定界符
Jun 19 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
php将服务端的文件读出来显示在web页面实例
Oct 31 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
php中stream(流)的用法
2014/03/25 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
Python读写配置文件的方法
2015/06/03 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
聊城大学毕业生自荐书
2014/02/01 职场文书
迟到检讨书500字
2014/02/05 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
房屋买卖协议书
2014/04/10 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
2015中学教学工作总结
2015/07/22 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS