background image

   * 交换数据数组中两个元素的位置。

   *

   * @param integer $x 元素在数组中的索引。

   * @param integer $y 元素在数组中的索引。

   */

  private function swap($x, $y) {

    $temp = $this->data[$x];

    $this->data[$x] = $this->data[$y];

    $this->data[$y] = $temp;  

  }

 

  /**

   * 冒泡排序。

   */

  private function sort() {

    $this->done = TRUE;

 

    for ($i = 1; $i < $this->size; ++$i) {

      // 记录交换数据的次数。

      $swap = 0;

 

      for ($j = $this->size - 1; $j > $i - 1; --$j) {

        if ($this->data[$j] < $this->data[$j - 1]) {

          $this->swap($j - 1, $j);

          ++$swap;

        }

      }

 

      // 若交换数据的次数为 0,说明数据数组已有序,不必再进行排序。

      if (0 === $swap) {

        break ;

      }

    }