冒泡排序(英语:Bubble Sort)是⼀种简单的排序算法。它重复地遍历要排序的数列,⼀次⽐较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的⼯作是重复地进⾏直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越⼩的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序算法的运作如下:

  • ⽐较相邻的元素。如果第⼀个⽐第⼆个⼤(升序),就交换他们两 个。 对每⼀对相邻元素作同样的⼯作,从开始第⼀对到结尾的最后⼀对。
  • 这步做完后,最后的元素会是最⼤的数。
  • 针对所有的元素重复以上的步骤,除了最后⼀个。
  • 持续每次对越来越少的元素重复上⾯的步骤,直到没有任何⼀对数字 需要⽐较。

冒泡排序的分析
交换过程图示(第⼀次):

那么我们需要进⾏n-1次冒泡过程,每次对应的⽐较次数如下图所示:

代码如下:

# coding=utf-8def bubble_sort(array):for i in range(1, len(array)):for j in range(0, len(array) - i):if array[j] > array[j + 1]:array[j], array[j + 1] = array[j + 1], array[j]return arrayif __name__ == '__main__':array = [10, 17, 50, 7, 30, 24, 27, 45, 15, 5, 36, 21]print("冒泡排序:", bubble_sort(array))

时间复杂度

  • 最优时间复杂度:O(n) (表示遍历⼀次发现没有任何可以交换的元 素,排序结束。)
  • 最坏时间复杂度:O(n 2 )
  • 稳定性:稳定

用Python实现冒泡排序相关推荐

  1. python实现冒泡排序完整算法_Python实现冒泡排序算法的完整实例

    冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后 ...

  2. python实现冒泡排序视频_Python实现冒泡排序算法的完整实例

    冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后 ...

  3. python实现冒泡排序视频_Python实现冒泡排序

    图文教程 上次,我们学习了Python中的循环.今天,我们做一个关于循环的练习,来加深大家的学习成果. 这个练习叫什么呢?我们就用Python实现冒泡排序 冒泡排序 要学习冒泡排序必须知道它的原理: ...

  4. python与冒泡排序

    上一篇文章,介绍了一个非常快的排序算法--桶排序,但是它的缺点就是太耗资源了,这次要实现的算法就不用太耗资源了,它就是冒泡排序. 问题提出: 将以下数据升序排列:9, 2, 8, 6, 4 冒泡排序原 ...

  5. Python实现冒泡排序的代码

    以下是Python实现冒泡排序的代码: 格式有点问题,重新调整一下,如下: def bubbleSort(nums):# 设置一个flag,用来判断某次循环是否发生了交换flag = Truefor ...

  6. python实现冒泡排序完整算法_利用python实现冒泡排序算法实例代码

    利用python实现冒泡排序算法实例代码 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数 ...

  7. python 实现冒泡排序的思路和代码

    当需求提到需要从小到大的排序时,我们很自然的就会想起最基础的"冒泡排序" 冒泡排序的原理就不再多说了,网上有一大堆,以下是python实现冒泡排序的代码. 对于冒泡排序算法,如果有 ...

  8. python列表冒泡排序,Python实现简单的列表冒泡排序和反转列表操作示例

    #-*-coding:utf-8-*- #g:/python #冒泡排序 #1.定义一个列表 number=[6665,666,323,124,4442,5,123,412,55] #外循环控制冒泡排 ...

  9. python学习——python实现冒泡排序算法

    python实现冒泡排序算法 一.冒泡排序算法实现原理 基本思想 具体步骤 二.图解冒泡排序 三.py代码实现冒泡排序算法 一.冒泡排序算法实现原理 基本思想 比较相邻的元素.如果第一个比第二个大,就 ...

  10. python复习冒泡排序

    冒泡排序: 思路: 先找到最大值放到最右边: #encoding=utf-8 a=[1,9,2,8,3,6,4] print "a before change:",a for i ...

最新文章

  1. (C++)1031 查验身份证 3难点+3注意点
  2. 私有云相对更流行的公有云和混合云有什么优势?
  3. 申通快递机器人上岗_申通快速分拣机器人未来有70%人会失业
  4. cacti及其相关插件的安装
  5. CentOS 6.5配置本地YUM源
  6. jsp内置对象*response
  7. 网易java笔试题_网易笔试题详细解答(Java)
  8. ((ios开发学习笔记 十二))Nib加载的方式实现自定义TableView
  9. wpf mysql课程设计_使用 WPF 和 MySQL 搭建小型人资管理系统——主要页面
  10. cas java单点登录_(Java)CAS单点登录
  11. 积水识别 工地积水识别
  12. 未转变者服务器怎么弄指令权限,未转变者基础指令
  13. 推荐一款高效的处理延迟任务神器
  14. WiredTiger系列2:Eviction详解
  15. 20189200余超 2018-2019-2 移动平台应用开发实践第三周作业
  16. 7.TensorRT中文版开发教程-----TensorRT中的INT8量化详解
  17. 云计算产品学习(2)
  18. pygame战棋游戏制作之战棋棋子设置(二)
  19. 毕业后的档案问题如何处理
  20. 强平日志模块-埋点方案

热门文章

  1. 计算机高层应用,计算机网络中高层应用.ppt
  2. mysql 中eq_表达式中的运算符EQ NE GT GE LT LE…..
  3. 高版本JDK13新特性以及与JDK8对比
  4. Pycharm 2018.2.1-2018.1
  5. nginx平滑升级添加ssl实现站内https
  6. 数据库树状结构的关系表的删除方案
  7. linux 防火墙 iptables 允许 某个 某段 IP访问 某个端口
  8. lua 元表/元方法
  9. CodeForces - 1300D Aerodynamic(几何+思维)
  10. Visio矢量图导出教程