冒泡排序:比较数组相邻两个元素的值大小,如果左侧大于右侧的值,则交换两值位置,然后将重新生成的数组将键值加一再次进行两值比较。
举例:
比较数组[2,4,3,1]
循环第一次:[2,4,3,1]
第一次比较:2和4比较,4大于2,生成结果为[2,4,3,1]
第二次比较:4和3比较,4大于3,这时4与3交换位置,生成结果为[2,3,4,1]
第三次比较:4和1比较,4大于1,这时4和1交换位置,生成结果为[2,3,1,4]
循环第二次:[2,3,1,4]
第一次比较:2和3比较,3大于2,位置不变,生成结果为[2,3,1,4]
第二次比较:3和1比较,3大于1,交换位置,生成结果为[2,1,3,4]
循环第三次:[2,1,3,4]
第一次比较:2和1比较,2大于1,交换位置,生成结果为[1,2,3,4]
图片更为生动的展示了整个过程(图片与数据未对应):
图片引用地址:https://blog.csdn.net/hellozhxy/article/details/79911867
分析:
所谓冒泡,就是循环数组,使相邻的两个元素,左侧的值永远小于右侧的值。这样就会每经过一次循环(i),就会把前n-i中的最大值放到右侧。
实现:
function bubbling_sort($array){ $totalNum = count($array); for($i=0;$i<$totalNum;$i++){ for($j=0;$j<$totalNum-$i-1;$j++){ if($array[$j]>$array[$j+1]){ $maxNum = $array[$j]; $array[$j] = $array[$j+1]; $array[$j+1] = $maxNum; } } } return $array; }