1. 冒泡排序算法(原理)
    比较相邻的元素。如果第一个比第二个大,就交换他们两个。最后的元素应是最大的数。
    对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。
    针对所有的元素重复以上的步骤,除了最后一个。
    持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

注:冒泡排序为稳定排序,若判断时为 if l[j] >= l[j+1],则为不稳定排序

  1. 基础版冒泡排序
    不带注释
def maopaopaixu(l):for i in range(len(l)):for j in range(len(l)-i-1):if l[j] > l[j+1]:l[j] , l[j+1] = l[j+1] , l[j]return limport random
l = []
for i in range(0,10):l.append(random.randint(1,10))
print(l)
maopaopaixu(l)

输出:

# 输出
>>> print(l)
[5, 7, 3, 4, 7, 6, 9, 8, 1, 5]
>>> maopaopaixu(l)
[1, 3, 4, 5, 5, 6, 7, 7, 8, 9]

带注释版:

def maopaopaixu(l):     # 定义maopaopaixu的函数,形参为lmax = 0     # 记录此函数的运算次数,辅助行for i in range(len(l)):     # i循环,每执行1次,将列表中的最大值移至末尾.循环次数为range(0,l列表的长度 = 0,10)for j in range(len(l)-i-1):     # j循环,j为列表中的位标。range内len(l)减1:因为下方if判定位标j和j+1的大小,若位标为9时,9+1,位标为10,超出列表,if会报错.range内len(l)要减i:执行完一次j循环后,下一次i循环,j循环的次数就可以减掉已经排序好的元素数,即为len(l)-iif l[j] > l[j+1]:   # 判断位标j的元素是否 > 位标j+1的元素,若大于,执行下方语句l[j] , l[j+1] = l[j+1] , l[j]   # 将j和j+1的位置调换max += 1    # 循环每执行1次,运算次数+1次,辅助行print(l,"运算",max,"次")    # 打印运算后的列表和运算次数,辅助行return l    # 返回已经排序好的列表limport random     # 导入python的random模块,即可使用random方法生成随机数
l = []      # 空列表(此行可不写,用来做重复执行代码时的列表初始化
for i in range(0,10):     # 循环10次,每次向列表末尾添加一个随机数,从而生成包含10个元素的列表l.append(random.randint(1,10))      # 向列表末尾添加一个随机整数,randint(1,10):随机整数在1~10间出现
print(l)    # 打印出列表l
maopaopaixu(l)  # 调用maopaopaixu函数,将l传入函数中
# 输出
>>> print(l)    # 打印出列表l
[2, 6, 9, 4, 1, 7, 5, 4, 4, 3]
>>> maopaopaixu(l)  # 调用maopaopaixu函数,将l传入函数中
[2, 6, 9, 4, 1, 7, 5, 4, 4, 3] 运算 1 次
[2, 6, 9, 4, 1, 7, 5, 4, 4, 3] 运算 2 次
[2, 6, 4, 9, 1, 7, 5, 4, 4, 3] 运算 3 次
[2, 6, 4, 1, 9, 7, 5, 4, 4, 3] 运算 4 次
[2, 6, 4, 1, 7, 9, 5, 4, 4, 3] 运算 5 次
[2, 6, 4, 1, 7, 5, 9, 4, 4, 3] 运算 6 次
[2, 6, 4, 1, 7, 5, 4, 9, 4, 3] 运算 7 次
[2, 6, 4, 1, 7, 5, 4, 4, 9, 3] 运算 8 次
[2, 6, 4, 1, 7, 5, 4, 4, 3, 9] 运算 9 次
[2, 6, 4, 1, 7, 5, 4, 4, 3, 9] 运算 10 次
[2, 4, 6, 1, 7, 5, 4, 4, 3, 9] 运算 11 次
[2, 4, 1, 6, 7, 5, 4, 4, 3, 9] 运算 12 次
[2, 4, 1, 6, 7, 5, 4, 4, 3, 9] 运算 13 次
[2, 4, 1, 6, 5, 7, 4, 4, 3, 9] 运算 14 次
[2, 4, 1, 6, 5, 4, 7, 4, 3, 9] 运算 15 次
[2, 4, 1, 6, 5, 4, 4, 7, 3, 9] 运算 16 次
[2, 4, 1, 6, 5, 4, 4, 3, 7, 9] 运算 17 次
[2, 4, 1, 6, 5, 4, 4, 3, 7, 9] 运算 18 次
[2, 1, 4, 6, 5, 4, 4, 3, 7, 9] 运算 19 次
[2, 1, 4, 6, 5, 4, 4, 3, 7, 9] 运算 20 次
[2, 1, 4, 5, 6, 4, 4, 3, 7, 9] 运算 21 次
[2, 1, 4, 5, 4, 6, 4, 3, 7, 9] 运算 22 次
[2, 1, 4, 5, 4, 4, 6, 3, 7, 9] 运算 23 次
[2, 1, 4, 5, 4, 4, 3, 6, 7, 9] 运算 24 次
[1, 2, 4, 5, 4, 4, 3, 6, 7, 9] 运算 25 次
[1, 2, 4, 5, 4, 4, 3, 6, 7, 9] 运算 26 次
[1, 2, 4, 5, 4, 4, 3, 6, 7, 9] 运算 27 次
[1, 2, 4, 4, 5, 4, 3, 6, 7, 9] 运算 28 次
[1, 2, 4, 4, 4, 5, 3, 6, 7, 9] 运算 29 次
[1, 2, 4, 4, 4, 3, 5, 6, 7, 9] 运算 30 次
[1, 2, 4, 4, 4, 3, 5, 6, 7, 9] 运算 31 次
[1, 2, 4, 4, 4, 3, 5, 6, 7, 9] 运算 32 次
[1, 2, 4, 4, 4, 3, 5, 6, 7, 9] 运算 33 次
[1, 2, 4, 4, 4, 3, 5, 6, 7, 9] 运算 34 次
[1, 2, 4, 4, 3, 4, 5, 6, 7, 9] 运算 35 次
[1, 2, 4, 4, 3, 4, 5, 6, 7, 9] 运算 36 次
[1, 2, 4, 4, 3, 4, 5, 6, 7, 9] 运算 37 次
[1, 2, 4, 4, 3, 4, 5, 6, 7, 9] 运算 38 次
[1, 2, 4, 3, 4, 4, 5, 6, 7, 9] 运算 39 次
[1, 2, 4, 3, 4, 4, 5, 6, 7, 9] 运算 40 次
[1, 2, 4, 3, 4, 4, 5, 6, 7, 9] 运算 41 次
[1, 2, 3, 4, 4, 4, 5, 6, 7, 9] 运算 42 次
[1, 2, 3, 4, 4, 4, 5, 6, 7, 9] 运算 43 次
[1, 2, 3, 4, 4, 4, 5, 6, 7, 9] 运算 44 次
[1, 2, 3, 4, 4, 4, 5, 6, 7, 9] 运算 45 次
[1, 2, 3, 4, 4, 4, 5, 6, 7, 9]

来源:简书
作者:yj的天使
转载链接:点击查看原文章

python3 使用冒泡排序法原理解析,简单易懂相关推荐

  1. ISO7816协议深度解析-简单易懂协议详解(一)-- 复位,字符帧,及ATR

    1. 摘要 IC卡必须支持T=0或T=1的协议,但不是同时支持这两种协议,而终端则必须同时支持T=0和T=1的协议. • T=0通讯协议是异步半双工字符传输协议: • T=1通讯协议是异步半双工块传输 ...

  2. PRI变换法原理解析及其matlab分析

    ---------------------------------------------------------------------------------------------------- ...

  3. RSA算法原理(简单易懂)

    1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法.在了解RSA算法之前,先熟悉下几个术语  根据密钥的使用方法,可以将密码分为对称密码和公钥密码  对称密码 ...

  4. SpringCloud 中 Feign 核心原理,简单易懂!

    目录 SpringCloud 中 Feign 核心原理 Feign远程调用的基本流程 Feign 远程调用的重要组件 Feigh 远程调用的执行流程 SpringCloud 中 Feign 核心原理 ...

  5. SDIO - 1bit / 4bit V2.0 协议深度解析-简单易懂协议详解

    1.简介 SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备.SDIO1.0标准定义了两种类型的SDIO卡: 全速的SDIO卡,传 ...

  6. 温湿度模块 DHT11/12 芯片 协议解析 - 简单易懂协议详解

    1.产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器.它应用专用的数字模块采集技术和温湿度传感技术,确保 产品具有极高的可靠性与卓越的长期稳定性.传感器包括一个电容式 ...

  7. 红外协议 IR Sharp 协议深度解析-简单易懂协议详解

    夏普红外协议,网上资料很少,它用在夏普生产的VCRs-(盒式磁带录像机),这是其被称为夏普协议的原因. 1. 调制 使用38K载波对编码后的波形进行调制: 夏普协议依据位时间长度进行解码.每个脉冲都是 ...

  8. SpringBoot自动装配原理(简单易懂)

    1.什么是自动装配 自动装配就是把别人(官方)写好的config配置类加载到spring容器,然后根据这个配置类生成一些项目需要的bean对象. (小声逼逼:就像我们自己在项目了写的config配置类 ...

  9. 红外协议 PHILIPS RC5 协议深度解析-简单易懂协议详解

    RC5是飞利浦使用较多的一种的红外遥控器协议, 1. 特征 使用双向编码(又称曼彻斯特编码): 使用36K载波对编码后的波形进行调制,RC5的每个bit的半高部分包含32个载波脉冲,周期为(1 / 3 ...

  10. 冒泡排序法(Java实现)

    冒泡排序法 ※ 冒泡排序法原理 对数组进行排序,冒泡排序法的原理就是将一组无序数组进行排序,同过把值较小的数逐渐向数组的顶部(即朝第一个元素)冒出来,就像水中的气泡上升一样.同时,值较大的数据逐渐向数 ...

最新文章

  1. CentOS7启动图形界面
  2. Android 开发笔记 Google地图定位与路线显示
  3. mysql near_完美解决 ERROR 1064 (42000): You have an error in your SQL syntax ... near …
  4. fedora25安装virtualbox虚拟机
  5. mysql gtid是什么_mysql gtid初探
  6. Windows Phone 知识锦(12月版)
  7. Java基础学习总结(84)——Java面向对象六大原则和设计模式
  8. c oracle 存储图片,用c语言如何读取和保存jpg图片文件?
  9. MyBlog前端开发2
  10. BI项目实施完成,不知道怎么进行测试?Smartbi手把手教你
  11. vant使用iconfont图标
  12. 图像尺寸与图像像素、分辨率的关系
  13. 计算机保研面试-英语问题
  14. 手写签名 PNG 制作
  15. 支付宝公布春节抢红包大数据 金华人全国第五壕
  16. FREERTOS出现断言情况以及解决方法:Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,378
  17. VMware Esxi补丁包手工执行升级
  18. Java并发编程——初识JUC
  19. Go语言与区块链——区块链主流语言:Golang
  20. 一篇文章教会你利用Python网络爬虫获取穷游攻略

热门文章

  1. 中讯环亚开始招大客户销售啦
  2. 【水果识别】基于matlab PCA苹果酸甜度识别【含Matlab源码 1634期】
  3. 毕设题目:Matlab智能算法VRP(车辆路径规划)
  4. 【图像去噪】基于matlab GUI DCT图像去噪【含Matlab源码 614期】
  5. mysql 修改字段为主键自增_「MySQL整理」 MySQL语法,如何操作数据表
  6. qt设置背景图片变黑色_PS软件如何快速制作一个黑色创意海报
  7. c++——CString,string,char*之间的转换
  8. Gradle下载 Jar 包
  9. textarea 的中文输入判断与搜狗输入法的特殊行为
  10. 在Django中使用F()函数