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中使用灵巧的体系结构
Oct 09 PHP
下载文件的点击数回填
Oct 09 PHP
php 购物车的例子
May 04 PHP
使用php来实现网络服务
Sep 15 PHP
PHP采集相关教程之一 CURL函数库
Feb 15 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
PHP判断变量是否为0的方法
Feb 08 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
php中socket通信机制实例详解
Jan 03 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
Laravel 的数据库迁移的方法
Jul 31 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 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代码DOS造成用光网络带宽
2011/03/01 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
Yii核心验证器api详解
2016/11/23 PHP
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
python中for in的用法详解
2020/04/17 Python
Python自动登录QQ的实现示例
2020/08/28 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
24岁生日感言
2014/01/13 职场文书
信息管理应届生求职信
2014/03/07 职场文书
法制宣传标语
2014/06/23 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
我是特种兵观后感
2015/06/11 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL