PHP算法之冒泡排序

冒泡排序原理: 当一群泡(使用数组: 数据), 数据大就是大泡, 小的就是小泡: 将两个相邻的泡进行比较: 如果左边的大于右边: 交换; 否则继续下一轮比较: 一组比完之后只能出现一个大泡:  连续进行多轮(数组长度- 1轮)

代码实现

/**
 * 冒泡算法
 * @param array $arr 待排序的数组
 * @return array 已经排序好的数组
 */
function bubble_sort($arr) {
    // 外层循环控制轮数: 数组进行几轮
    for ($i = 0,$len = count($arr); $i < $len;$i++) {
        // 内存循环: 针对每一轮将所有的元素都进行一次比较
        // j的长度需要在原始长度上 - 1:因为在使用过程中会对长度 进行 + 1操作: 如果是使用原始长度,那么最后一个元素的时候会因为+1操作而溢出
        for($j = 0;$j < $len - 1 - $i;$j++){
            // 比较: 左边大于右边: 交换; 小于右边: 什么都不做
            if($arr[$j] > $arr[$j + 1]){
                // 交换
                // 通过第三个变量保存左边变量
                $temp = $arr[$j];
                // 将第二个值赋值给第一个值
                $arr[$j] = $arr[$j+1];
                // 将第三个变量的值复制个第二个变量
                $arr[$j + 1] = $temp;
            }

        }
    }
    //返回排序结果
    return $arr;
}

// 定义数组
$arr = array(5,2,3,9,1,0);

// 调用函数
print_r(bubble_sort($arr)); // Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 5 [5] => 9 )
原文地址:https://www.cnblogs.com/chenjiacheng/p/6522307.html