用Python实现冒泡排序
冒泡排序(英语: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实现冒泡排序相关推荐
- python实现冒泡排序完整算法_Python实现冒泡排序算法的完整实例
冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后 ...
- python实现冒泡排序视频_Python实现冒泡排序算法的完整实例
冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后 ...
- python实现冒泡排序视频_Python实现冒泡排序
图文教程 上次,我们学习了Python中的循环.今天,我们做一个关于循环的练习,来加深大家的学习成果. 这个练习叫什么呢?我们就用Python实现冒泡排序 冒泡排序 要学习冒泡排序必须知道它的原理: ...
- python与冒泡排序
上一篇文章,介绍了一个非常快的排序算法--桶排序,但是它的缺点就是太耗资源了,这次要实现的算法就不用太耗资源了,它就是冒泡排序. 问题提出: 将以下数据升序排列:9, 2, 8, 6, 4 冒泡排序原 ...
- Python实现冒泡排序的代码
以下是Python实现冒泡排序的代码: 格式有点问题,重新调整一下,如下: def bubbleSort(nums):# 设置一个flag,用来判断某次循环是否发生了交换flag = Truefor ...
- python实现冒泡排序完整算法_利用python实现冒泡排序算法实例代码
利用python实现冒泡排序算法实例代码 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数 ...
- python 实现冒泡排序的思路和代码
当需求提到需要从小到大的排序时,我们很自然的就会想起最基础的"冒泡排序" 冒泡排序的原理就不再多说了,网上有一大堆,以下是python实现冒泡排序的代码. 对于冒泡排序算法,如果有 ...
- python列表冒泡排序,Python实现简单的列表冒泡排序和反转列表操作示例
#-*-coding:utf-8-*- #g:/python #冒泡排序 #1.定义一个列表 number=[6665,666,323,124,4442,5,123,412,55] #外循环控制冒泡排 ...
- python学习——python实现冒泡排序算法
python实现冒泡排序算法 一.冒泡排序算法实现原理 基本思想 具体步骤 二.图解冒泡排序 三.py代码实现冒泡排序算法 一.冒泡排序算法实现原理 基本思想 比较相邻的元素.如果第一个比第二个大,就 ...
- python复习冒泡排序
冒泡排序: 思路: 先找到最大值放到最右边: #encoding=utf-8 a=[1,9,2,8,3,6,4] print "a before change:",a for i ...
最新文章
- (C++)1031 查验身份证 3难点+3注意点
- 私有云相对更流行的公有云和混合云有什么优势?
- 申通快递机器人上岗_申通快速分拣机器人未来有70%人会失业
- cacti及其相关插件的安装
- CentOS 6.5配置本地YUM源
- jsp内置对象*response
- 网易java笔试题_网易笔试题详细解答(Java)
- ((ios开发学习笔记 十二))Nib加载的方式实现自定义TableView
- wpf mysql课程设计_使用 WPF 和 MySQL 搭建小型人资管理系统——主要页面
- cas java单点登录_(Java)CAS单点登录
- 积水识别 工地积水识别
- 未转变者服务器怎么弄指令权限,未转变者基础指令
- 推荐一款高效的处理延迟任务神器
- WiredTiger系列2:Eviction详解
- 20189200余超 2018-2019-2 移动平台应用开发实践第三周作业
- 7.TensorRT中文版开发教程-----TensorRT中的INT8量化详解
- 云计算产品学习(2)
- pygame战棋游戏制作之战棋棋子设置(二)
- 毕业后的档案问题如何处理
- 强平日志模块-埋点方案
热门文章
- 计算机高层应用,计算机网络中高层应用.ppt
- mysql 中eq_表达式中的运算符EQ NE GT GE LT LE…..
- 高版本JDK13新特性以及与JDK8对比
- Pycharm 2018.2.1-2018.1
- nginx平滑升级添加ssl实现站内https
- 数据库树状结构的关系表的删除方案
- linux 防火墙 iptables 允许 某个 某段 IP访问 某个端口
- lua 元表/元方法
- CodeForces - 1300D Aerodynamic(几何+思维)
- Visio矢量图导出教程