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 相关文章推荐
BBS(php &amp; mysql)完整版(六)
Oct 09 PHP
PHP中的日期处理方法集锦
Jan 02 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
Jun 29 PHP
页面乱码问题的根源及其分析
Aug 09 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
PHP中FTP相关函数小结
Jul 15 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
PHP7 其他修改
Mar 09 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
BBS(php &amp; mysql)完整版(七)
2006/10/09 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
初识PHP中的Swoole
2016/04/05 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
JavaScript Split()方法
2015/12/18 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
python正则表达式re模块详解
2014/06/25 Python
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
工地门卫岗位职责
2013/12/30 职场文书
写给学生的新学期寄语
2014/01/18 职场文书
入党自荐书范文
2014/03/09 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
小班教师个人总结
2015/02/05 职场文书
大二学年个人总结
2015/03/03 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL