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

达标考试中的冒泡算法

作者: 食盐_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]))

相关文章

  • 达标考试中的冒泡算法

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

  • 7.4-全栈Java笔记:三种经典算法

    冒泡排序算法 冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养。 算法重复地...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 简单的冒泡算法,原来不简单

    是不是觉得冒泡算法很简单? 是的,确实很简单,中心思想是两两交换。 那你能写出冒泡算法吗? 你能解释冒泡算法中的各...

  • JavaScript 中的算法

    JavaScript 中的算法 Sort 以下例子全部以正序为标准 bubbleSort 冒泡排序 冒泡排序算法的...

  • 基本算法——快速排序算法

    快速排序算法是对冒泡算法的改进。所以我们首先来简单的谈谈冒泡算法。 1.冒泡算法 冒泡排序(Bubble S...

  • 2022-03-01

    1.排序算法: 到底什么是排序?-它是排列列表中项目顺序的算法。 重要的排序算法—— 冒泡排序:冒泡排序是最基本的...

  • 冒泡算法

    一、常用冒泡算法 二、优化冒泡算法

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 带你刷leetCode冒泡排序

    01. 算法 简单说程序中的算法,就是观察规律,用代码实现逻辑。 02. 冒泡排序 冒泡排序(英语:Bubble ...

网友评论

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

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