冒泡排序
对数组$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