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表单转换textarea换行符的方法
Sep 10 PHP
Look And Say 序列php实现代码
May 22 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
php while循环得到循环次数
Oct 26 PHP
php 发送带附件邮件示例
Jan 23 PHP
php 不使用js实现页面跳转
Feb 11 PHP
php中cookie的使用方法
Mar 29 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
ThinkPHP使用Smarty第三方插件方法小结
Mar 19 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 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解决图片无损压缩的问题
2017/09/01 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
js友好的时间返回函数
2016/08/24 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
python下载文件时显示下载进度的方法
2015/04/02 Python
详解Python中with语句的用法
2015/04/15 Python
python使用udp实现聊天器功能
2018/12/10 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
Python txt文件如何转换成字典
2020/11/03 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
后勤副校长自我鉴定
2013/10/13 职场文书
分家协议书
2014/04/21 职场文书
自我推荐信范文
2014/05/09 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书