美文网首页
基于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实现的冒泡排序

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