代码参见:
http://www.open-open.com/code/view/1437656134881
布尔变量 $exchange, 用来监视每($i+1)次冒泡排序是否发生过相邻元素交换的情况。如果有($exchange为true),则需继续进行下一次冒泡排序。如果没有发生过相邻元素交换的情况,则说明排序任务已经完成,无需进行下一次冒泡排序。这时,使用 break,立刻跳出 $i 循环体。
1.[代码]php 冒泡排序
//数组元素值从小到大排序
$arr=array(1,42,0,3,15,7,19,26);
foreach($arr as $k=>$v)
echo " index:$k -- value:$v
";
echo "
";
echo "After applying sort()
";
$ar=$arr;
//定义一个中间变量
sort($ar);
print_r($ar);
echo '
';
echo "使用 冒泡排序";
$temp=0;
//外层循环的次数
for($i=0;$i
$exchange=false;
//内层之间向右相邻的两个数组元素值进行比较
for($j=0;$j
//当后一个数组元素值大于前一个数组原数值
if($arr[$j]>$arr[$j+1]){
//数组元素交换
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
$exchange=true;
}
}
//外层数组循环的次数是---count($arr)-1
//-1的原因(数组元素值比较时是两个比较
//如3个数组元素比较2次
echo "这是第".($i+1)."次比较的结果";
echo "
";print_r($arr);
echo "
";if (!$exchange)
break;
}
echo "
";
echo "
";print_r($arr);
echo "
"?>