美文网首页
算法和数据结构2.1冒泡排序

算法和数据结构2.1冒泡排序

作者: 数字d | 来源:发表于2019-07-27 00:23 被阅读0次

    冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根根据结果交换两个数字的位置”这一操作的算法。

    在这一操作过程中,数字会像泡泡一样,慢慢的从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。

    比如对如下的数组中的数字进行排序。

    第一趟

    [5, 9, 3, 1, 2, 8, 4, 7, 6 ]
    

    第一次从序列的右侧比较6 和 7 的大小,将小的值放在左侧

    第一次比较结果是:

    [5, 9, 3, 1, 2, 8, 4,  6 ,7 ]
    

    第二次是用6个4进行比较,结果是:

    [5, 9, 3, 1, 2, 8, 4,6 ,7 ]
    
    

    第三次次是用6个8进行比较,结果是:

    [5, 9, 3, 1, 2, 4, 8,6 ,7 ]
    
    

    ....
    ....
    第一趟排序结束:

    [1,5, 9, 3, 2, 4, 8,6 ,7 ]
    

    最左边数字已经归为。

    第二趟,重复以上步骤

    第二趟结束时候,结果:

    [1,2, 5, 9, 3, 4, 6,8 ,7 ]
    
    

    排序中 ....

    排序结束

    [1,2,3,4,5,6,7,8,9]
    

    这里冒泡的操作可以反着来,就是说,从左到右开始比较,比较出来的最大值放在右侧。

    时间:

    在冒泡排序中,n个数据,第一趟需要比较n-1次,第二趟需要比较 n-2 次, ...第n-1趟需要比较1次。因此,总的比较次数为恒定值约等于 n2 / 2 次;

    这个值和输入序列的杂乱顺序无关。

    不过,交换数字的次数和输入数据的排列顺序有关。假设某种极端的情况,输入数据正好是从小到大的顺序,那么不需要任何操作。
    而另一种极端情况是,输入数据正好是逆序的,那么每次比较之后都要进行交换位置操作,因此,冒泡排序的时间复杂度为O(n2)

    相关文章

      网友评论

          本文标题:算法和数据结构2.1冒泡排序

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