美文网首页程序员
BubbleSort(冒泡排序)

BubbleSort(冒泡排序)

作者: FLINGH | 来源:发表于2019-03-23 14:38 被阅读4次

顾名思义,冒泡排序法就是让数组元素像水中的气泡一样逐渐上浮,进而达到排序的目的。下面算法便是利用冒泡法将数列排列为升序的例子:

    flag=1       //存放顺序相反的相邻元素
    while flag
        flag=0
        for j 从N-1到 1
        if A[j]<A[j-1]
            A[j] 与 A[j-1] 交换
            flag=1

讲解:
与之前的插入法排序一样,冒泡排序法的各个计算步骤中,数组也分为“已排序部分“和“未排序部分”。

冒泡排序法:
重复执行下述处理,知道数组中不包含顺序相反的相邻元素

从数组末尾开始依次比较相邻的两个元素,如果大小关系相反,则交换两个元素的位置。
下面以数组A={5,3,2,4,1}为例,对其进行冒泡排序,具体排序过程如下:


排序.jpg

数组从开头逐一完成排序。步骤一到步骤四的处理结束后,数据中最小的元素将移动到数组开头的A[0]位置。同理,步骤五到步骤七结束后,第二小元素移动到A[1],然后步骤八到步骤九确定A[2],步骤十确定A[3],依次往下,逐一确定已排序部分末尾要追加的元素。
程序每完成一次外层循环,已排序部分就增加一个元素。这样外层循环最多执行N次,同事内层循环执行次数会逐渐减少。所以又可得冒泡排序算法:

    flag=1
    i=0;    //未排序部分的起始下标
    while flag
        flag=0
        for j 从N-1到 i+1
            if A[j]<A[j-1]
                A[j] 与 A[j-1] 交换
                flag=1
        i++

总结:
冒泡排序法仅对数组中相邻元素进行比较和交换,因此键相同的元素不会改变顺序。所以其属于一种稳定排序的算法。但,一旦将比较运算A[j]<A[j-1]改为A[j]<=A[j-1],算法就会失去其稳定性。

相关文章

  • 2019-08-11

    Javascript中常用几种基础算法 1 排序-冒泡排序 //冒泡排序 function bubbleSort...

  • IOS 算法(冒泡排序、系统排序API、二分法)

    冒泡排序 - (void)bubbleSort { NSArray* nums =@[@(8),@(3),@(4)...

  • 冒泡排序–排序算法

    /* * 冒泡排序 */ public class BubbleSort { public static void...

  • 冒泡排序(BubbleSort)

    BubbleSort 先说说这个最慢的排序吧,很好理解,从字面上来看排序的方式就像冒泡一样,所以是最慢的 解:(1...

  • BubbleSort—冒泡排序

    冒泡排序 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的...

  • BubbleSort(冒泡排序)

    顾名思义,冒泡排序法就是让数组元素像水中的气泡一样逐渐上浮,进而达到排序的目的。下面算法便是利用冒泡法将数列排列为...

  • 冒泡排序(BubbleSort)

    1.基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。 2.过程: 比较相邻的两个数据,如果第二个数小,就交...

  • BubbleSort冒泡排序

    /* @Author: sumBorn @Date: 2022-02-23 21:57:10 @Descripti...

  • javascript中常用的排序方法:

    1.冒泡排序: function bubbleSort(arr) { for(var i = 0; ...

  • 设计模式

    一、冒泡排序 publicclass BubbleSort { public static void Bubble...

网友评论

    本文标题:BubbleSort(冒泡排序)

    本文链接:https://www.haomeiwen.com/subject/myrsvqtx.html