zoukankan      html  css  js  c++  java
  • 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 )
  • 相关阅读:
    用JSP实现的商城购物车模块
    C语言中的static 具体分析
    JAVA动态代理
    ACM之跳骚---ShinePans
    thinkphp5项目--个人博客(二)
    mysql数据类型
    htm、html、shtml网页区别
    thinkphp命名空间
    github README.md教程
    如何在github的README.md中添加图片
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522307.html
Copyright © 2011-2022 走看看