数据结构和算法——冒泡排序

  • 2019 年 11 月 24 日
  • 筆記

1、要解决的问题

给定如下所示的数字列表,请按升序对它们进行排序。

$numbers = [21,25,100,98,89,77];

要求

  • 对数字进行排序时,需要使用冒泡排序算法。
  • 用PHP实现该算法

2、伪代码说明

冒泡排序通过一次比较两个值来工作,并且成对配对。并且迭代直到所有元素都到位才结束。每次迭代后,至少有一个元素移到列表的末尾。下面是第一次迭代的说明:

描述冒泡排序的伪代码如下:

FOR each element of the list        FOR each element of the list            IF current element greater then next element                swap the elements//如果当前的元素大于后一个元素,则交换位置            END IF        END FOR    END FOR

内层循环被认为是一次迭代,外层循环确保我们迭代足够的时间来对列表充分进行排序。

3、PHP实现冒泡排序

要在PHP中实现冒泡排序,我们只需要两层循环。请注意,两层循环的终止是:列表的长度-1。这是为了防止访问未索引的元素。

<?php  $numbers = [21, 25, 100, 98, 89, 77];    $length = count($numbers) - 1    for ($i = 0; $i < $length; $i++) {        for ($j = 0; $j < $length; $j++) {            if ($numbers[$j] > $numbers[$j + 1]) {                $tmp = $numbers[$j];                $numbers[$j] = $numbers[$j + 1];                $numbers[$j + 1] = $tmp;          }      }  }    print_r($numbers);    // 输出:  /*  Array  (      [0] => 21      [1] => 25      [2] => 77      [3] => 89      [4] => 98      [5] => 100  )  */