Sosemseo广告
广告
广告

php冒泡排序

  • 2020-03-20   17:42:41
  • 来源:
  • 作者:代元培
  • 类别:原创
  • 浏览:759 次

      冒泡排序是简单排序算法中知名度最高的。也是刚入行就能频繁听到的,也是当时面试比较容易考的,但其实工作中至今没用过。

      那么冒泡排序的思路是怎么样的呢?首先就是先比较相邻的两个元素,如果满足条件,就交换,否则不动。然后再比较接下来的两个相邻的元素,然后满足条件就交换,否则不交换。以此类推。

      举例说明:一个数组有5个元素从小到大排序,首先第一个和第二个比,第一个比第二个大,就交换,否则不操作,然后第二个和第三个比较,第二个大于第三个则交换,否则不用交换。直到对比到第四个和第五个。经过一轮的循环对比,最大的数字就下沉到最下边了。小的数字逐渐向上浮出。

      如下代码是标准的冒泡排序,代码实现也完全符合冒泡排序的思想。


// 冒泡排序

function maopao($arr){

    $len = count($arr);

    for ($i = 0; $i < $len-1; $i++) { // 循环对比的次数

        for ($j = 0; $j < $len-1-$i; $j++) { // 当前轮相邻元素循环对比

            if ($arr[$j] > $arr[$j+1]) { // 如果前边的大于后边的

                $tmp = $arr[$j]; // 交换数据

                $arr[$j] = $arr[$j+1];

                $arr[$j+1] = $tmp;

            }

        }

    }

    return $arr;

}

$arr = [5,4,3,7,9,6,2,1,8];

print_r(maopao($arr));

 

// 另外一种阶梯式排序,每次和后面的所有逐一对比

// 阶梯式排序 从小到大排序

function jieTi($arr)

{

    $len = count($arr);

    for ($i = 0; $i < $len-1; $i++) { // 循环比对的次数

        for ($j = $i+1; $j < $len; $j++) { // 每次和后面的所有逐一比较

            if ($arr[$i] > $arr[$j]) { // 前边大于后边则交换

                $tmp = $arr[$i];

                $arr[$i] = $arr[$j];

                $arr[$j] = $tmp;

            }

        }

    }

    return $arr;

}

$arr = [6,2,4,7,9,3,1,5,8];

print_r(jieTi($arr));

  • 1
  • 2
  • 3
  • 关键词标签: php
  • 责任编辑:代元培
广告
分享到:

网友互动

网友评论 查看所有评论>>

广告

热门推荐

广告
Sosemseo-logo Sosemseo-提醒 Sosemseo-备案

京ICP备16050547号-1