1. 概述

  • 思想:两个循环嵌套,大循环从最大开始,小循环从0开始至大循环当前位置,小循环中的当前数与下一个数比较,而交换位置,一次来使得最大的数,升到最大的位置,如同泡泡一样,一个一个往上冒。
  • 稳定性:稳定
  • 优化:双向冒泡(最大的最左,最小的最右,时间复杂度除以2)

    2. 实现代码

    ```php <?php class BubbleSort { private $ori = []; public $new = []; public function __construct(array $arr) {

    1. $this->ori = $arr;
    2. $r = $this->bubble($this->ori);
    3. $this->new = $r;

    }

    private function bubble(array $arr) {

    1. for ($i = count($arr) - 1; $i > 0; $i--) {
    2. for ($j = 0; $j < $i; $j++) {
    3. if ($arr[$j] > $arr[$j + 1]) {
    4. $arr = self::swap($arr, $j, $j + 1);
    5. }
    6. }
    7. exit;
    8. }
    9. return $arr;

    }

    public static function swap(array $arr, int $i, int $j) {

    1. $tmp = $arr[$i];
    2. $arr[$i] = $arr[$j];
    3. $arr[$j] = $tmp;
    4. return $arr;

    } }

$arr = [5, 3, 6, 8, 1, 7, 9, 4, 2]; $cls = new BubbleSort($arr); print_r($cls->new); ```