美文网首页
冒泡排序算法(1)

冒泡排序算法(1)

作者: 楚江云 | 来源:发表于2018-09-02 23:08 被阅读13次

    冒泡排序 是一种比较简单的排序算法,其本质是相邻的两个元素进行大小比较,最终使得所有的元素形成从小到大或者从大到小的排列

    算法原理

    1. 比较相邻的元素,不相等,就进行交换
    2. 对所有的相邻元素进行第1步的操作,第一轮比较下来,最大(小) 的元素排在了最尾部
    3. 相邻的元素比较的次数在上一轮比较的基础上减去1次,进入下一轮的比较,,重复第1,2步
    4. 最大(小),第二大(小),第三大(小)......的元素依次会排到元素的最尾部
    5. 当比较次数为1的时候,执行完第1步,所有比较结束

    冒泡排序是一种稳定的排序算法

    代码示例

    <?php
    
    function bubbing_sort(array $arr)
    {
        // 统计需要排序的元素个数
        $len = count($arr);
        // 控制进行几轮比较
        for($j = 1; $j < $len ;$j++)
        {
            // 相邻的一组元素,两两之间需要比较的次数
            for($i = 0 ; $i < $len-$j ;$i++)
            {
                // 元素的排列方向 从小到大或者从大到小
                if($arr[$i] > $arr[$i+1])
                {
                    // 相邻的两个元素大小比较符合条件,两两交换位置
                    $temp = $arr[$i];
                    $arr[$i] = $arr[$i+1];
                    $arr[$i+1] = $temp ;
                }
            }
        }
        return $arr ;
    }
    $arr = [99,10,88,23,13,67];
    var_dump(bubbing_sort($arr));
    // output
    /*array (size=6)
      0 => int 10
      1 => int 13
      2 => int 23
      3 => int 67
      4 => int 88
      5 => int 99*/
    

    冒泡排序的核心是相邻元素之间的两两比较,比较完一轮,还有元素没有比较完,进入下一轮的比较,直到所有的元素都按照一定的顺序呈现出来.

    PS : 要是没有直观的感受,可以裁剪出几个小纸片,每个小纸片上写上数字(相当于一个元素),将这些小纸片放在一块按照冒泡排序实现思路进行比较.

    相关文章

      网友评论

          本文标题:冒泡排序算法(1)

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