冒泡排序
對數組$arr = [1,7,5,3,3,2]
按從小到大進行排序php
$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)); 獲得結果 array(6) { [0] => int(1) [1] => int(2) [2] => int(3) [3] => int(3) [4] => int(5) [5] => int(7) }
比較,邏輯大體是這樣的。html
i=0
的時候進行第一次冒泡j=0
=> 1-7
比較,7比1大,不作改變 [1,7,5,3,3,2]
數組
j=1
=> 7-5
比較,5比7小,交換位置 [1,5,7,3,3,2]
code
j=2
=> 7-3
比較,3比7小,交換位置 [1,5,3,7,3,2]
htm
j=3
=> 7-3
比較,3比7小,交換位置 [1,5,3,3,7,2]
blog
j=4
=> 7-2
比較,3比7小,交換位置 [1,5,3,3,2,7]
排序
這樣就進行了一次冒泡,獲得了最大值 7io
i=1
的時候進行第二次冒泡j=0
=> 1-5
比較,5比1大,不作改變 [1,5,3,3,2,7]
function
j=1
=> 5-3
比較,3比5小,交換位置 [1,3,5,3,2,7]
class
j=2
=> 5-3
比較,3比5小,交換位置 [1,3,3,5,2,7]
j=3
=> 5-2
比較,2比5小,交換位置 [1,3,3,2,5,7]
這樣就進行了二次冒泡,獲得了最大值 5
i=2
的時候進行第三次冒泡j=0
=> 1-3
比較,3比1大,不作改變 [1,3,3,2,5,7]
j=1
=> 3-3
比較,兩個同樣大,不作改變 [1,3,3,2,5,7]
j=2
=> 3-2
比較,2比3小,交換位置 [1,3,2,3,5,7]
這樣就進行了三次冒泡,獲得了最大值 3
i=3
的時候進行第四次冒泡j=0
=> 1-3
比較,3比1大,不作改變 [1,3,2,3,5,7]
j=1
=> 3-2
比較,2比3小,交換位置 [1,2,3,3,5,7]
這樣就進行了四次冒泡,獲得了最大值 3
i=4
的時候進行第五次冒泡j=0
=> 1-2
比較,2比1大,不作改變 [1,2,3,3,5,7]
這樣就進行了五次冒泡,獲得了最大值 2
文章參考 http://www.cnblogs.com/shen-hua/p/5422676.html