PHP的简易冒泡法代码分享

yipeiwu_com6年前PHP代码库
很基础的东西,感觉代码还不够简洁,希望高手指导修改
复制代码 代码如下:

<?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随机生成数字字母组合的方法。分享给大家供大家参考。具体如下: 直接上代码: 复制代码 代码如下:function getRandomString($len, $cha...

基于php编程规范(详解)

今天写这个是为了 提醒自己 编程过程 不仅要有逻辑 思想 还有要规范 代码 这样可读性 1、PHP 编程规范与编码习惯最主要的有以下几点:  1 文件说明  2 fu...

领悟php接口中interface存在的意义

可能大家都懂这些,作为不懂的我猜测了一下这个interface的意义,他就是为了后面调用的时候再调用的方法中调用实现类中interface中存在的内容,好绕口啊,写个例子留作以后看吧pa...

PHP实现关键字搜索后描红功能示例

PHP实现关键字搜索后描红功能示例

本文实例讲述了PHP实现关键字搜索后描红功能。分享给大家供大家参考,具体如下: 在刚开始学习php的时候,就对搜索过后的关键字描红感到好奇,但是这几天在巩固php基础的时候,就发现原来这...

编译php 5.2.14+fpm+memcached(具体操作详解)

#author:zhxia 给php打上php-fpm 补丁sudo tar jxvf php-5.2.14.tar.bz2sudo patch -d php-5.2.14 -p1 &l...