冒泡排序:比较数组相邻两个元素的值大小,如果左侧大于右侧的值,则交换两值位置,然后将重新生成的数组将键值加一再次进行两值比较。

举例:

比较数组[2,4,3,1]

循环第一次:[2,4,3,1]

第一次比较:2和4比较,4大于2,生成结果为[2,4,3,1]

第二次比较:4和3比较,4大于3,这时4与3交换位置,生成结果为[2,3,4,1]

第三次比较:4和1比较,4大于1,这时4和1交换位置,生成结果为[2,3,1,4]

循环第二次:[2,3,1,4]

第一次比较:2和3比较,3大于2,位置不变,生成结果为[2,3,1,4]

第二次比较:3和1比较,3大于1,交换位置,生成结果为[2,1,3,4]

循环第三次:[2,1,3,4]

第一次比较:2和1比较,2大于1,交换位置,生成结果为[1,2,3,4]

 

图片更为生动的展示了整个过程(图片与数据未对应):

每日算法-冒泡排序(一)

 

图片引用地址:https://blog.csdn.net/hellozhxy/article/details/79911867

 

分析:

所谓冒泡,就是循环数组,使相邻的两个元素,左侧的值永远小于右侧的值。这样就会每经过一次循环(i),就会把前n-i中的最大值放到右侧。

实现:

function bubbling_sort($array){
    $totalNum = count($array);
    for($i=0;$i<$totalNum;$i++){
        for($j=0;$j<$totalNum-$i-1;$j++){
            if($array[$j]>$array[$j+1]){
                $maxNum = $array[$j];
                $array[$j] = $array[$j+1];
                $array[$j+1] = $maxNum;
            }
        }
    }
    return $array;
}

 

相关文章:

  • 2021-11-29
  • 2021-05-04
  • 2021-10-12
  • 2018-03-26
  • 2019-05-21
  • 2021-12-05
  • 2021-10-15
猜你喜欢
  • 2021-12-04
  • 2020-02-19
  • 2021-12-05
  • 2021-07-15
  • 2021-10-31
  • 2022-02-18
  • 2021-12-05
相关资源
相似解决方案