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 相关文章推荐
人大复印资料处理程序_查询篇
Oct 09 PHP
APMServ使用说明
Oct 23 PHP
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
php中将网址转换为超链接的函数
Sep 02 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
8个PHP程序员常用的功能汇总
Dec 18 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
PHP中静态变量的使用方法实例分析
Dec 01 PHP
PHP注释语法规范与命名规范详解篇
Jan 21 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 14 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
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
15 个 JavaScript Web UI 库
2010/05/19 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
详解JS数值Number类型
2018/02/07 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
python 字典访问的三种方法小结
2019/12/05 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
五年级英语教学反思
2014/01/31 职场文书
语文教学随笔感言
2014/02/18 职场文书
大学生村官演讲稿
2014/04/25 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
研修心得体会
2014/09/04 职场文书
产品委托授权书范本
2014/09/16 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
先进班集体事迹材料
2014/12/25 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
MySQL 常见存储引擎的优劣
2021/06/02 MySQL