PHP冒泡排序
程序员文章站
2022-03-21 21:21:08
...
<?php
$arr = array(1,21,100,3,80,2,30,22,50,45,60,55);
//这个方法比较笨
for($i=0,$c=count($arr)-1;$i<$c;$i++){
//比较当前循环元素的值比后面的一个值大 那么就进行位置交换
if($arr[$i]>$arr[$i+1]){
$tmp = $arr[$i];
$arr[$i] = $arr[$i+1];
$arr[$i+1] = $tmp;
}
}
for($i=0,$c=count($arr)-1;$i<$c;$i++){
if($arr[$i]>$arr[$i+1]){
$tmp = $arr[$i];
$arr[$i] = $arr[$i+1];
$arr[$i+1] = $tmp;
}
}
for($i=0,$c=count($arr)-1;$i<$c;$i++){
if($arr[$i]>$arr[$i+1]){
$tmp = $arr[$i];
$arr[$i] = $arr[$i+1];
$arr[$i+1] = $tmp;
}
}
for($i=0,$c=count($arr)-1;$i<$c;$i++){
if($arr[$i]>$arr[$i+1]){
$tmp = $arr[$i];
$arr[$i] = $arr[$i+1];
$arr[$i+1] = $tmp;
}
}
echo "<pre>";
var_dump($arr);
echo "</pre>";
?>
运行后的结果
array(12) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(21)
[4]=>
int(22)
[5]=>
int(30)
[6]=>
int(45)
[7]=>
int(50)
[8]=>
int(55)
[9]=>
int(60)
[10]=>
int(80)
[11]=>
int(100)
}
<?php
$arr = array(1,21,100,3,80,2,30,22,50,45,60,55);
for($j=0,$c=count($arr);$j<$c;$j++){
for($i=0;$i<$c-1;$i++){
//比较当前循环元素的值比后面的一个值大 那么就进行位置交换
if($arr[$i]>$arr[$i+1]){
$tmp = $arr[$i];
$arr[$i] = $arr[$i+1];
$arr[$i+1] = $tmp;
}
}
}
echo "<pre>";
var_dump($arr);
echo "</pre>";
?>
运行后的结果
array(12) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(21)
[4]=>
int(22)
[5]=>
int(30)
[6]=>
int(45)
[7]=>
int(50)
[8]=>
int(55)
[9]=>
int(60)
[10]=>
int(80)
[11]=>
int(100)
}
<?php
$arr = array(1,21,100,3,80,2,30,22,50,45,60,55);
for($j=0,$c=count($arr);$j<$c;$j++){
for($i=0;$i<$c-1-$j;$i++){ //减的$j是每次排出最大值
//比较当前循环元素的值比后面的一个值大 那么就进行位置交换
if($arr[$i]>$arr[$i+1]){
$tmp = $arr[$i];
$arr[$i] = $arr[$i+1];
$arr[$i+1] = $tmp;
}
}
}
echo "<pre>";
var_dump($arr);
echo "</pre>";
?>
运行后的结果
array(12) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(21)
[4]=>
int(22)
[5]=>
int(30)
[6]=>
int(45)
[7]=>
int(50)
[8]=>
int(55)
[9]=>
int(60)
[10]=>
int(80)
[11]=>
int(100)
}
上一篇: 手册3.2.2