PHP的简易冒泡法代码分享
前端之家收集整理的这篇文章主要介绍了
PHP的简易冒泡法代码分享,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
很基础的东西,感觉代码还不够简洁,希望高手指导修改
<div class="codetitle"><a style="CURSOR: pointer" data="57630" class="copybut" id="copybut57630" onclick="doCopy('code57630')"> 代码如下:
<div class="codebody" id="code57630">
<?
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,3,12,11);
print_r(BubbleSort($str));
?>
基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复 9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,...,9,对于每一个i,j的
值依次为1,...10-i。
<div class="codetitle">
<a style="CURSOR: pointer" data="49344" class="copybut" id="copybut49344" onclick="doCopy('code49344')"> 代码如下: <div class="codebody" id="code49344">
<?
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,17,26,4,33,1);
print_r(asc($a));
?>
<?
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);
?>
sort_bubble_up.