<?php /** * 冒泡排序算法 * @param array $arr * @return array */ function bubble_sort($arr) { // 判断参数是否为数组,且不为空 if (!is_array($arr) || empty($arr)) { return $arr; } // 循环需要冒泡的轮数 for ($i = 1, $len = count($arr); $i < $len; $i++) { // 循环每轮需要比较的次数 for ($j = 0; $j < $len - $i; $j++) { // 大的数,交换位置,往后挪 if ($arr[$j] > $arr[$j + 1]) { $temp = $arr[$j + 1]; $arr[$j + 1] = $arr[$j]; $arr[$j] = $temp; } echo $i; } } var_dump($arr);die; return $arr; } $arr =[1,5,3,6,7,45,2]; bubble_sort($arr);
设计 思路 两层循环
1,最里面的一层设计
相邻的两个数做比较 后面一个比前面一个小,则用 临时数转换,使后面的哪一个大于前面的一个数值
转化 过程 1. 1 3 5 6 7 2 45
2. 1 3 5 6 2 7 45
3 1 3 5 2 6 7 45
4 1 3 2 5 6 7 45
5 1 2 3 5 6 7 45
6最后一个不需要循环,因为已经达到需要效果排序