定义

冒泡排序是用来排列一连串数字的算法

原理

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

PHP实现

PHP沙盒环境

拷贝代码到沙盒环境可以看到效果

//PHP实现升序
function bubble_asort(array $numbers = []){
  //获取数组元素个素总数 $n
  $n = count($numbers);
  //控制循环次数 $n-1
  for($j= 1; $j< $n; $j++){
   //控制元素坐标 $n-$j
    for($k = 0; $k < $n-$j; $k++){
      if($numbers[$k] > $numbers[$k + 1]){
        $temp = $numbers[$k];
        $numbers[$k] = $numbers[$k+1];
        //元素值大的往后排
        $numbers[$k+1] = $temp;
      }
    }
  }
  return $numbers;
}

//PHP实现降序
function bubble_dsort(array $numbers = []){
  //获取数组元素个素总数 $n
  $n = count($numbers);
  //控制循环次数 $n-1
  for($j= 1; $j< $n; $j++){
    //控制元素坐标 $n-$j
    for($k = 0; $k < $n-$j; $k++){
      if($numbers[$k] < $numbers[$k + 1]){
        $temp = $numbers[$k];
        $numbers[$k] = $numbers[$k+1];
        //元素值小的往后排
        $numbers[$k+1] = $temp;
      }

    }
  }
  return $numbers;
}

//例子
$numbers = [1,3,4,22,88,33,31,42];
print_r(bubble_asort($numbers));
print_r(bubble_dsort($numbers));

//PHP内置函数实现
sort($numbers,1);
print_r($numbers);

rsort($numbers,1);
print_r($numbers);

分类: 算法

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注