冒泡排序bubbleSort.php
function bubbleSort($arr){
$count=count($arr);
#比较次数 $count-1
for($i=0; $i<$count-1; $i++){
#为了防止数据越界
for($j=0; $j<$count-1-$i; $j++){
if($arr[$j] > $arr[$j+1]){
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
}
在要排序的一组数中,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换位置;
/
依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数 放后。然后比较第2
个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较
(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个 数),将小数放前中,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟
结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
5,4,1,3,2
// 4,1,3,2,5–4
// 1,3,2,4,5–3
// 1,2,3,4,5–2
<?php
$arr=array(5,4,1,3,2);
print_r(bubbleSort($arr));
function bubbleSort($arr)
{
$len=count($arr);
//该层循环控制,从第二位开始比较,需要冒泡的轮数
for($i=1;$i<$len;$i++)
{ //该层循环用来控制每轮 冒出一个数 需要比较的次数
for($k=0;$k<$len-$i;$k++)
{
if($arr[$k]>$arr[$k+1])
{
$tmp=$arr[$k+1];
$arr[$k+1]=$arr[$k];
$arr[$k]=$tmp;
}
}
//print_r($arr);die; 4,1,3,2,5
}
return $arr;
}
?>
/