资讯专栏INFORMATION COLUMN

冒泡排序

lansheng228 / 3192人阅读

摘要:以此类推,循环到最后一个数停止。例如样本数组的样本总数是则要进行轮。直到最小数到达最后面的位置,然后进行下一轮。代码冒泡算法排序参与排序的随机数组,手动随机冒泡排序外循环的冒泡次数是次。

冒泡排序

对样本数组进行比较循环

从头开始依次比较大小,交换位置,然后再跟相邻的下一个数进行比较,再交换位置

一轮比较完毕以后,进行下一次的比较,还是从样本头开始比较,比较次数比上一次的次数减少一次,因为有一个数在上一轮比较中已经归位。

以此类推,循环到最后一个数停止。


例如:

$arr = [15, 32, 78,13, 58, 52, 63, 22, 14, 55];
样本数组的样本总数是10,则要进行$i=(10-1)轮。

每轮再进行10-$i次的相邻数($i的起始值是1)的比较,直至该轮的结束,数字归位

如果是从大到小,那么比较左边的数和右边的数谁更小,更小的向右交换位置,以此类推。直到最小数到达最后面的位置,然后进行下一轮。


代码:
";

//冒泡排序: 外循环的冒泡次数是N-1次。因为若干个数冒泡,样本中的最后一个数是不需要进行排序的
for ($i = 1; $i < count($arr) -1; $i++) {  //样本数是10,$i<9,则$i的依次取值是1,2,3,4,5,6,7,8
    /**
     * $j的取值范围最多到count($arr) - 2 ,因为$j+1的取值范围最大是count($arr) ;
     *
     * 由于$j的取值是取决于 count($arr) - $i
    */
    for ($j = 0; $j < count($arr) - $i; $j++) {//某一次的冒泡排序次数是  样本数减去$i的值, $j的依次取值是0-8,0-7,...,0-2
        if ($arr[$j] < $arr[$j+1]) { //这边的比较符号决定排序顺序。
            $t = $arr[$j];
            $arr[$j] = $arr[$j+1];
            $arr[$j+1] = $t;
        }
    }

}
foreach ($arr as $arr_l){
    echo $arr_l."--";
}

缺点:

时间复杂度为O(N^2),算法较为浪费时间

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22435.html

相关文章

  • 数据结构与算法(二):带你读懂冒泡排序(Bubble Sorting)

    摘要:经过一次冒泡排序,最终在无序表中找到一个最大值,第一次冒泡结束。也是我们后面要说的冒泡排序的优化。冒泡排序只执行第一层循环,而不会执行第二层循环。因此冒泡排序的时间复杂度是。 showImg(https://user-gold-cdn.xitu.io/2019/6/19/16b6f986df6880f9?w=640&h=142&f=gif&s=17175);showImg(https:...

    chuyao 评论0 收藏0
  • JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序

    摘要:之所以把冒泡排序选择排序插入排序放在一起比较,是因为它们的平均时间复杂度都为。其中,冒泡排序就是原地排序算法。所以冒泡排序是稳定的排序算法。选择排序思路选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法为王。 想学好前端,先练好内功,...

    canger 评论0 收藏0
  • 排序算法分析总结(附js实现)

    摘要:本文对一些排序算法进行了简单分析,并给出了的代码实现。平均时间复杂度不好分析,它是冒泡排序是稳定的排序算法。冒泡排序是原地排序算法原地排序指的是空间复杂度是的排序算法。归并排序,会将数组从中间分成左右两部分。 本文对一些排序算法进行了简单分析,并给出了 javascript 的代码实现。因为本文包含了大量的排序算法,所以分析不会非常详细,适合有对排序算法有一定了解的同学。本文内容其实不...

    liaoyg8023 评论0 收藏0
  • 数据结构与算法——冒泡排序

    摘要:多练练排序算法,不仅能够让我们知道一些排序方法的底层实现细节,更能够锻炼我们的思维,提升编程能力。排序算法的稳定性一个稳定的排序,指的是在排序之后,相同元素的前后顺序不会被改变,反之就称为不稳定。 1. 导言 因为这是排序算法系列的第一篇文章,所以多啰嗦几句。 排序是很常见的算法之一,现在很多编程语言都集成了一些排序算法,比如Java 的Arrays.sort()方法,这种方式让我们可...

    Yang_River 评论0 收藏0
  • 排序(1):冒泡排序

    摘要:一前言冒泡排序是一种交换排序。以升序冒泡排序为例,冒泡排序就是要每趟排序过程中通过两两比较相邻元素,将小的数字放到前面,大的数字放在后面。所以,冒泡排序最好时间复杂度为。因此,冒泡排序的平均时间复杂度为。 一、前言 冒泡排序是一种交换排序。 什么是交换排序呢? 解:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 二、算法思想 它重复地走访要排序的...

    CrazyCodes 评论0 收藏0
  • 五分钟学会冒泡排序

    摘要:而冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身的大小,一点一点的向着数组的一侧移动。二图解冒泡排序我们先看一个例子,有七个数字组成一个无序数列,,,,,,对他进行冒泡排序。 一、什么是冒泡排序        冒泡排序的英文是bubble sort,它...

    enrecul101 评论0 收藏0

发表评论

0条评论

lansheng228

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<