冒泡排序
对数组$arr = [1,7,5,3,3,2]
按从小到大进行排序
$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)}
比较,逻辑大致是这样的。
当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]
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]
这样就进行了一次冒泡,得到了最大值 7
当i=1
的时候进行第二次冒泡
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]
这样就进行了二次冒泡,得到了最大值 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