php 冒泡算法

<?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最后一个不需要循环,因为已经达到需要效果排序

posted on 2020-10-27 17:18  kevin_yang123  阅读(84)  评论(0编辑  收藏  举报