冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉。

实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边。然后再继续重复的比较,直至无数值需要交换,此时排序完成。

例子解释:

无序列表arr = [7,6,5,3,9,2,8,1,4]

数列长度:len = 9

第一趟排序:

i = 1;

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

7>6 =>[6,7,5,3,9,2,8,1,4]数值小的放左边,数值打的放右边

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

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

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

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

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

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

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

第一趟进行了8次交换,即子循环比较的次数为j=len-i=9-1=8

至此第一趟冒泡已完成,最大数值9已经排到最右边。

第二趟排序:

i = 2

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

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

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

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

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

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

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

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

第二趟进行了7次交换,即子循环比较的次数为j=len-i=9-2=7

至此第二趟冒泡已完成,arr = [5,3,6,2,7,1,4,8,9]。

。。。

接下来也是如此依次比较排序,直至数组arr = [1,2,3,4,5,6,7,8,9]

总共进行了8趟排序;

Python代码实现:

def bubbleSort(arr):

# 获取数组长度

arr_len = len(arr)

# 外部大循环=》第几趟

for i in range(1, arr_len):

# 内部循环比较=》相邻数值进行比较

for j in range(0, arr_len - i):# 每次内循环的次数都需要总长度减去已排好位置的值的数量

if arr[j] > arr[j+1]: # 左右比较

arr[j], arr[j+1] = arr[j+1], arr[j] # 将数值大的放右边,数值小的放左边

arr = [64, 34, 25, 12, 22, 11, 90]

bubbleSort(arr)

print('排序后:')

for i in range(len(arr)):

print('%d'%arr[i], end=' ')

总结

到此这篇关于Python实现冒泡排序算法的文章就介绍到这了,更多相关Python实现冒泡排序算法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

本文标题: Python实现冒泡排序算法的完整实例

本文地址: http://www.cppcns.com/jiaoben/python/361267.html

python实现冒泡排序完整算法_Python实现冒泡排序算法的完整实例相关推荐

  1. python实现排列组合公式算法_Python实现卡尔曼滤波算法之贝叶斯滤波

    Python实现卡尔曼滤波算法之贝叶斯滤波 作者:yangjian 卡尔曼滤波器属于贝叶斯滤波器的一种特例,本文主要讲解贝叶斯滤波原理及其算法的python实现. 先来看下贝叶斯公式 贝叶斯公式 :后 ...

  2. python扫雷 高级算法_Python玩转算法—扫雷

    此题来自LeetCode上的一道难度为Medium的题,说是有一张玩到一半的扫雷地图,接下来给你指定一个点击位置,让你预测点击之后,地图将发生怎么样的变化.看到这道题,瞬间让我想起了以前玩扫雷的日子, ...

  3. python实现dfa过滤算法_Python实现DFA算法,完成实体词匹配和敏感词过滤等功能

    一.什么是DFA算法 DFA 全称为:Deterministic Finite Automaton,即确定有穷自动机.其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个 ...

  4. python中值滤波算法_Python实现卡尔曼滤波算法之贝叶斯滤波

    Python实现卡尔曼滤波算法之贝叶斯滤波 作者:yangjian 卡尔曼滤波器属于贝叶斯滤波器的一种特例,本文主要讲解贝叶斯滤波原理及其算法的python实现. 先来看下贝叶斯公式 贝叶斯公式 :后 ...

  5. python实现ks算法_Python实现Dijkstra算法

    Dijkstra算法 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要 ...

  6. python谱聚类算法_Python机器学习高级算法!谱聚类(Spectal Clustering)算法分析和实例详解...

    谱聚类(Spectal Clustering)算法是聚类算法的一种,比起传统的K-Means聚类算法,谱聚类算法的效果更优秀,其计算量也小很多,除了谱聚类和K-Means聚类算法,另外还有密度聚类和层 ...

  7. 用python排序算法_Python - 八大排序算法

    1.序言 本文使用Python实现了一些常用的排序方法.文章结构如下: 1.直接插入排序 2.希尔排序 3.冒泡排序 4.快速排序 5.简单选择排序 6.堆排序 7.归并排序 8.基数排序 上述所有的 ...

  8. python数据分析方法五种_python数据分析与算法之五 算法

    5.1线性回归算法模型 机器学习 人工智能和机器学习之间的关系 机器学习是实现人工智能的一种技术手段 算法模型 概念:特殊对象.该对象内部封装了某种还没有求出解的方程! 作用: 预测:天气预报 分类: ...

  9. python前缀表达式求值_python数据结构与算法 11 后缀表达式求值

    从本节开始,删除原版的英文,直接发译后的文稿. 后缀表达式求值 栈的最一个应用例子,计算一个后缀表达式的值.这个例子中仍然用栈的数据结构.不过,当扫描表达式的时候,这次是操作数压栈等待,不是转换算法中 ...

最新文章

  1. ActivityRouter 框架简单实用
  2. KnockOut绑定
  3. hazelcast_带弹簧的Hazelcast分布式执行
  4. !何为脏读、不可重复读、幻读
  5. mysql安装被打断_Mysql的安装/性能优化/安全加固
  6. webpack环境的配置
  7. OFFICE技术讲座:边框底纹对布局的影响
  8. ArcGIS紧凑型切片读取与应用2-webgis动态加载紧凑型切片(附源码)
  9. Unity3d之HashSlash学习笔记(一)--角色属性类的构架
  10. $(...).nicescroll is not a function报错分析
  11. div3 C. Dominant Piranha
  12. JAVA中的arraylist集合,Java ArrayList集合
  13. C++友元(友元函数)
  14. 陶泓达:3.23黄金,原油,白银操作策略!
  15. HDU - 7047 - Link with Balls ( 插板法 + 组合数 )
  16. 每日一问 --如何理解虚数?
  17. Firefox 本地保存密码破解 (破解key3.db, signons.sqlite , key4.db, logins.json)
  18. FP-Growth算法详解
  19. 汽车零部件行业应用APS的必要性
  20. 现代通信技术之IP网技术

热门文章

  1. 查看LINUX发行版的名称及其版本号
  2. spark,hadoop区别
  3. linux pytorch 快速安装
  4. PyTorch 图像分类
  5. TinyML设备设计的Arm内核
  6. 蓝牙mesh网络技术的亮点
  7. 深度学习调用TensorFlow、PyTorch等框架
  8. xlrd.biffh.XLRDError:不支持的格式或文件损坏:预期的BOF记录;找到了b’b \ x14#e \ xbc \
  9. Excution failed for task ':app:transformClassWithDexForDebug'
  10. android Style(样式)的解析