美文网首页
基于PHP实现的冒泡排序

基于PHP实现的冒泡排序

作者: 清风倚歌行 | 来源:发表于2019-01-17 12:35 被阅读0次

最近一直想学习一些算法相关的基础知识 锻炼自己的思维能力
刚学习了第一个最基础的冒泡排序 就拿来实践下

理论部分:

冒泡排序是数列排序的一种算法 根据两个相邻值的大小排序 如果右边的数字小于左边的数字 则被交换 重复此操作 直到最后所有的数字都被排序

代码部分:

$arr = array(1,3,6,2,9,7,5,8,4);
$arr = bubbleSort($arr);
print_r($arr);
function bubbleSort($arr)
{
    $len = count($arr); //获得数组长度

    for($i=0;$i<$len;$i++){
    
        for($j=0;$j<$len-$i;$j++){
        
            if($j+1 < $len){  //这里是为了防止超出数组取值范围 

                if($arr[$j] > $arr[$j+1]){    //进行排序 大的往后放
                    $temporary = $arr[$j];    //把当前变量保留
                    $arr[$j]   = $arr[$j+1];  //把小的放在前面
                    $arr[$j+1] = $temporary;  //再把大的放在后面
                }
            }
        }
      
    }
    return $arr;
}

输出结果 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )

注意: 如果没有 if($j+1 < $len)这个判断 会提示 Notice: Undefined offset.... 这是因为超出了数组的取值范围 因为$j循环最大为数组长度-1 当进行判断左右数字比较时也就是$arr[$j+1]取值时就会触发这个提示 所以这里加上这个判断
或者可以在代码头部添加error_reporting(E_ALL || ~E_NOTICE) 更改错误级别
还可以在php.ini中设置错误级别 设置为:error_reporting = E_ALL & ~E_NOTICE 就可以不提示Notice信息

相关文章

  • 基于PHP实现的冒泡排序

    最近一直想学习一些算法相关的基础知识 锻炼自己的思维能力刚学习了第一个最基础的冒泡排序 就拿来实践下 理论部分: ...

  • 数据结构与算法 - 排序

    代码实现基于golang version 1.18 1. 冒泡排序 冒泡排序是一种交换排序,核心是冒泡,把数组中...

  • 排序算法

    冒泡排序 PHP OC 快速排序

  • 品一品编程 --- 5

    问题描述: 实现基于数组的 sort 排序函数 程序如下: //冒泡排序 O(n^2) //快速排序---优势:...

  • PHP 冒泡排序法

    PHP 冒泡排序法

  • PHP实现冒泡排序

    冒泡排序属于交换排序,是一种稳定排序,平均时间复杂度为O(n^2),最好情况时间复杂度为O(n),最坏情况时间复杂...

  • PHP 实现冒泡排序

    导语 冒泡排序是相对比较简单、常用的算法,同时在面试中也是最常被问到的问题。自认能力不够,不能有更深的理解,下面就...

  • 冒泡排序(php实现)

    什么是冒泡排序 冒泡排序的英文Bubble Sort,是一种最基础的交换排序。大家一定都喝过汽水,汽水中常常有许多...

  • php实现冒泡排序

    原数组 思路解析 按照二维数组中某个值大小排序 原数组 冒泡排序的实现

  • php实现冒泡排序

    总结冒泡排序 1:相邻的两个数的比较 2:两层循环 第一层是决定多少轮,第二层决定每层需要多少次 3:临时变量存放...

网友评论

      本文标题:基于PHP实现的冒泡排序

      本文链接:https://www.haomeiwen.com/subject/jbxaqqtx.html