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 相关文章推荐
基于mysql的bbs设计(五)
Oct 09 PHP
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
Jun 21 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
PHP如何将XML转成数组
Apr 04 PHP
php使用QueryList轻松采集js动态渲染页面方法
Sep 11 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 PHP
php精度计算的问题解析
Jun 21 PHP
PHP代码加密的方法总结
Mar 13 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 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
短波的认识
2021/03/01 无线电
PHP防盗链代码实例
2014/08/27 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
详解Python IO编程
2020/07/24 Python
python的launcher用法知识点总结
2020/08/07 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
体育教育个人自荐信范文
2013/12/01 职场文书
超市总经理岗位职责
2014/02/02 职场文书
公司承诺书怎么写
2014/05/24 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
北京爱情故事观后感
2015/06/12 职场文书
常住证明范本
2015/06/23 职场文书
httpclient调用远程接口的方法
2022/08/14 Java/Android