美文网首页
达标考试中的冒泡算法

达标考试中的冒泡算法

作者: 食盐_a67e | 来源:发表于2019-11-27 16:11 被阅读0次

    2019年11月23号星期六的区级达标考试中的冒泡算法,我不会,回来后查询一下方可得知:

    冒泡排序(顺序形式),就是从左向右,两两比较,如果左边元素大于右边的,就交换两个元素的位置。

    其中每一轮排序,序列中最大的元素浮动到最右面。也就是说,每一轮排序,至少确保有一个元素在正确的位置。

    这样接下来的循环,就不需要考虑已经排好的元素了,每次内层循环次数都会-1.

    其中,如果有一轮循环之后,次序并没有交换,这时我们就可以停止循环,得到我们想要的有序序列了。

    在python3中实现的冒泡算法如下:

    先分析原理:例如将 [15,4,23,56,48,72,8]这个数值进行冒泡排序

    ======第 一 轮:(用 i 表示)======

    ########## 数组的长度 - 比较的轮数 = 每一轮中比较的次数=(7-1=6)#########

    先    15     和    4    比较, 交换位置;    #比较1次

            15    和    23    比较,位置不变;     #比较2次

            23    和    56    比较,位置不变;     #比较3次

            56    和    48    比较,交换位置;     #比较4次

            56    和    72    比较,位置不变;     #比较5次

            72    和    8    比较,交换位置;     #比较6次

    第一轮之后,数组变成了[4,15,23,48,56,8,72]

    ======第 二轮:(用 i 表示)======

    ########## 数组的长度 - 比较的轮数 = 每一轮中比较的次数=(7-2=5)#########

    由 [4,15,23,48,56,8,72]再开始:

    4    和    15    比较,    不变;    #比较1次

    15    和    23    比较;    不变;     #比较2次

    23    和    48    比较;    不变;     #比较3次

    48    和    56    比较;    不变;    #比较4次

    56    和    8     比较 ;交换位置;   #比较5次

    到目前,数组变成[4,15,23,48,8,56,72]

    ======第 三 轮:(用 i 表示)======

    ########## 数组的长度 - 比较的轮数 = 每一轮中比较的次数=(7-3=4)#########

    由 [4,15,23,48,8,56,72]开始:

    4    和    15    比较    结果    不变;     #比较1次

    15    和    23    比较    结果    不变;     #比较2次

    23    和    48    比较    结果    不变;     #比较3次

    48    和    8    比较    结果    交换位置;     #比较4次

    到目前,数组变成 [4,15,23,8,48,56,72]

    ======第 四 轮:(用 i 表示)======

    ########## 数组的长度 - 比较的轮数 = 每一轮中比较的次数=(7-4=3)#########

    由 [4,15,23,8,48,56,72]为基础开始:

    4    和    15    比较    结果    不变;    #比较1次

    15    和    23    比较    结果    不变;    #比较2次

    23    和    8    比较    结果    交换位置;    #比较3次

    本轮结束,到目前,数组为[4,15,8,23,48,56,72]

    ======第 五 轮:(用 i 表示)======

    ########## 数组的长度 - 比较的轮数 = 每一轮中比较的次数=(7-5=2)#########

    由[4,15,8,23,48,56,72]开始:

    4    和    15    比较    不变;    #比较1次

    15    和    8    比较    交换位置;    #比较2次

    到目前,数组为[4,8,15,23,48,56,72]

    ======第 六 轮:(用 i 表示)======

    ########## 数组的长度 - 比较的轮数 = 每一轮中比较的次数=(7-6=1)#########

    由[4,8,15,23,48,56,72]开始

    4    和    8    比较    结果    不变;  #比较1次

    结束,所以最终结果为:[4,8,15,23,48,56,72]

    总共进行了六轮比较,每一轮中都是进行了 数组的长度 - 比较的轮数 = 每一轮中比较的次数;

    根据上边的分析,得出以下代码:

    在python中,我们可以用一下代码实现:

    def bubble_sort(num):

        for i in range(len(num) - 1):

            for j  in range(len(num) - 1 - i):

                if  num[j] > num[j + 1]:

                    num[j],num[j+1] = num[j+1],num[j]

        return num

    print(bubble_sort([15,4,23,56,48,72,8]))

    相关文章

      网友评论

          本文标题:达标考试中的冒泡算法

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