基于PHP实现的冒泡排序

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

理论部分:

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

代码部分:

$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信息

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,116评论 0 2
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,308评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,364评论 0 2
  • //禁用错误报告 error_reporting(0); //报告运行时错误 error_reporting(E_...
    沁心轩墨阅读 828评论 1 1
  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 1,578评论 1 4

友情链接更多精彩内容