PHP冒泡排序
冒泡排序
對(duì)數(shù)組$arr = [1,7,5,3,3,2]按從小到大進(jìn)行排序
$arr = [1,7,5,3,3,2];
function order($arr)
{
$length = count($arr);
for ($i=0;$i<$length-1;$i++)
{
for ($j=0;$j<$length-1-$i;$j++)
if($arr[$j]>$arr[$j+1])
{
$temp = $arr[$j+1];
$arr[$j+1] = $arr[$j];
$arr[$j] = $temp;
}
else
{
break;
}
}
return $arr;
}
var_dump(order($arr));
得到結(jié)果
array(6) {
[0] =>
int(1)
[1] =>
int(2)
[2] =>
int(3)
[3] =>
int(3)
[4] =>
int(5)
[5] =>
int(7)
}
比較,邏輯大致是這樣的。
當(dāng)i=0的時(shí)候進(jìn)行第一次冒泡
j=0=> 1-7比較,7比1大,不做改變 [1,7,5,3,3,2]
j=1=> 7-5比較,5比7小,交換位置 [1,5,7,3,3,2]
j=2=> 7-3比較,3比7小,交換位置 [1,5,3,7,3,2]
j=3=> 7-3比較,3比7小,交換位置 [1,5,3,3,7,2]
j=4=> 7-2比較,3比7小,交換位置 [1,5,3,3,2,7]
這樣就進(jìn)行了一次冒泡,得到了最大值 7
當(dāng)i=1的時(shí)候進(jìn)行第二次冒泡
j=0=> 1-5比較,5比1大,不做改變 [1,5,3,3,2,7]
j=1=> 5-3比較,3比5小,交換位置 [1,3,5,3,2,7]
j=2=> 5-3比較,3比5小,交換位置 [1,3,3,5,2,7]
j=3=> 5-2比較,2比5小,交換位置 [1,3,3,2,5,7]
這樣就進(jìn)行了二次冒泡,得到了最大值 5
當(dāng)i=2的時(shí)候進(jìn)行第三次冒泡
j=0=> 1-3比較,3比1大,不做改變 [1,3,3,2,5,7]
j=1=> 3-3比較,兩個(gè)一樣大,不做改變 [1,3,3,2,5,7]
j=2=> 3-2比較,2比3小,交換位置 [1,3,2,3,5,7]
這樣就進(jìn)行了三次冒泡,得到了最大值 3
當(dāng)i=3的時(shí)候進(jìn)行第四次冒泡
j=0=> 1-3比較,3比1大,不做改變 [1,3,2,3,5,7]
j=1=> 3-2比較,2比3小,交換位置 [1,2,3,3,5,7]
這樣就進(jìn)行了四次冒泡,得到了最大值 3
當(dāng)i=4的時(shí)候進(jìn)行第五次冒泡
j=0=> 1-2比較,2比1大,不做改變 [1,2,3,3,5,7]
這樣就進(jìn)行了五次冒泡,得到了最大值 2
文章參考 http://www.cnblogs.com/shen-hua/p/5422676.html
原文地址:https://segmentfault.com/a/1190000016260418
總結(jié)
- 上一篇: [蓝桥杯][算法训练VIP]乘积最大(动
- 下一篇: Silver Cow Party POJ