图文教程

上次,我们学习了Python中的循环。今天,我们做一个关于循环的练习,来加深大家的学习成果。

这个练习叫什么呢?我们就用Python实现冒泡排序

冒泡排序

要学习冒泡排序必须知道它的原理:

所谓冒泡,就是将元素两两之间进行比较,谁大就往后移动,直到将最大的元素排到最后面,接着再循环一趟,从头开始进行两两比较,而上一趟已经排好的那个元素就不用进行比较了。(图中排好序的元素标记为黄色柱子)

说得不清楚,我们看看下面的动图就应该明白了

代码

下面,我们就进入代码环节。

现在,我给你一个

nums = [3,1,25,6,8,10,15]

,要求你用Python将nums实现冒泡排序。

看上去很难入手,其实很简单,我先给出代码

nums = [3,1,25,6,8,10,15]

for i in range(len(nums)-1):

for j in range(len(nums) - i -1):

if nums[j] > nums[j+1]:

nums[j],nums[j+1] = nums[j+1],nums[j]

print("第"+str(j)+"次内循环"+str(nums))

print("第"+str(i)+"次外循环"+str(nums))

print("最后的结果"+str(nums))

我们先遍历nums,这不就是我们的range(len(nums)-1),至于为什么是range(len(nums)-1),其实就是我们的下标从0开始的,

len(nums)返回是7,range是左开右闭,但是冒泡排序,我们只需要取到

nums[5] = 10 就足够了,所以这里range(len(nums)-1),取到[3,1,25,6,8,10]

。然后,我们在遍历之后的nums,比如i = 0,我们将j

取值范围到len(nums) - i -1,用nums[j] > nums[j+1]

判断两两的大小, 每次内循环将最大的移到最右边。

每一次内循环的目的就是将当中最大的移到最右边,而每一次外循环的目的就是当最大的移到最右边后,缩小范围,再寻找最大的数,再把它移到最右边。

我们执行上面的代码的结果如下:

第0次内循环[1, 3, 25, 6, 8, 10, 15]

第1次内循环[1, 3, 25, 6, 8, 10, 15]

第2次内循环[1, 3, 6, 25, 8, 10, 15]

第3次内循环[1, 3, 6, 8, 25, 10, 15]

第4次内循环[1, 3, 6, 8, 10, 25, 15]

第5次内循环[1, 3, 6, 8, 10, 15, 25]

第0次外循环[1, 3, 6, 8, 10, 15, 25]

第0次内循环[1, 3, 6, 8, 10, 15, 25]

第1次内循环[1, 3, 6, 8, 10, 15, 25]

第2次内循环[1, 3, 6, 8, 10, 15, 25]

第3次内循环[1, 3, 6, 8, 10, 15, 25]

第4次内循环[1, 3, 6, 8, 10, 15, 25]

第1次外循环[1, 3, 6, 8, 10, 15, 25]

第0次内循环[1, 3, 6, 8, 10, 15, 25]

第1次内循环[1, 3, 6, 8, 10, 15, 25]

第2次内循环[1, 3, 6, 8, 10, 15, 25]

第3次内循环[1, 3, 6, 8, 10, 15, 25]

第2次外循环[1, 3, 6, 8, 10, 15, 25]

第0次内循环[1, 3, 6, 8, 10, 15, 25]

第1次内循环[1, 3, 6, 8, 10, 15, 25]

第2次内循环[1, 3, 6, 8, 10, 15, 25]

第3次外循环[1, 3, 6, 8, 10, 15, 25]

第0次内循环[1, 3, 6, 8, 10, 15, 25]

第1次内循环[1, 3, 6, 8, 10, 15, 25]

第4次外循环[1, 3, 6, 8, 10, 15, 25]

第0次内循环[1, 3, 6, 8, 10, 15, 25]

第5次外循环[1, 3, 6, 8, 10, 15, 25]

最后的结果[1, 3, 6, 8, 10, 15, 25]

我们可以看到,第0次外循环,已经将25放在了最右边,第1次外循环确定把15放到最右边,这样从右往左,从大到小,这就是完整的冒泡排序。

python实现冒泡排序视频_Python实现冒泡排序相关推荐

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

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

  2. python 录制web视频_Python django框架 web端视频加密的实例详解

    视频加密流程图: 后端获取保利威的视频播放授权token,提供接口api给前端 参考文档:http://dev.polyv.net/2019/videoproduct/v-api/v-api-play ...

  3. python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法

    Python + opencv 读取视频的三种情况: 情况一:通过摄像头采集视频 情况二:通过本地视频文件获取视频 情况三:通过摄像头录制视频,再读取录制的视频 摄像头采集.本地视频文件的读取.写视频 ...

  4. python自动剪视频_python剪切视频与合并视频的实现

    windows10/python3.6环境需安装imageio,ffmpeg(视频中有教下载)文字中不体现太麻烦,看起来也不方便! 剪切代码python代码: import imageio image ...

  5. python播放网页视频_python如何播放视频

    python如何播放视频?下面给大家介绍两种方法: 方法一 使用imageio库import pylab import imageio #视频的绝对路径 filename = '/path/to/yo ...

  6. python如何播放视频_python如何播放视频

    python如何播放视频?下面给大家介绍两种方法: 方法一 使用imageio库import pylab import imageio #视频的绝对路径 filename = '/path/to/yo ...

  7. python如何播放视频_python中播放视频的方法有哪些

    python中播放视频的方法有哪些 发布时间:2020-08-25 11:45:52 来源:亿速云 阅读:78 作者:小新 这篇文章给大家分享的是有关python中播放视频的方法有哪些的内容.小编觉得 ...

  8. python opencv 录制视频_Python利用opencv实现录制视频

    import cv2 import threading    #python 多线程操作库 class RecordingThread(threading.Thread): def __init__( ...

  9. python爬app视频_python爬取抖音APP视频教程

    本文讲述爬取抖音APP视频数据(本文未完,后面还有很多地方优化总结) 公众号回复:抖音 即可获取源码 1.APP抓包教程,需要用到fiddler fiddler配置和使用查看>>王者荣耀盒 ...

最新文章

  1. JAVA逆向反混淆-追查Burpsuite的破解原理(转)
  2. iOS内实现h5原生开发
  3. 鸟哥的Linux私房菜(服务器)- 第十四章、账号控管: NIS 服务器
  4. 理念高大上的智慧社区,要落地还得俯下身解决四个现实问题
  5. 关于敏捷规划的微信对话
  6. 好色派:日省 6 小时,神策分析是我的“菜”
  7. 单应性矩阵和仿射变换_单应矩阵 基本矩阵 本质矩阵的区别与联系
  8. Linux游戏0 A.D.操作说明(持续更新中)
  9. 东北电力大学计算机专业几本,东北电力大学是几本?东北电力大学怎么样?
  10. iOS应用如何支持IPV6
  11. 吴恩达神经网络和深度学习-学习笔记-44-交并比IoU + 非极大值抑制
  12. 来吧,给自己提个醒,哭着复习一下当初没好好学习的内容。
  13. squid代理与缓存(下)
  14. 毕业半年,帅地人生的第一个一百万
  15. excel合并两列内容_必看!Excel数据合并的这3个小技巧,千万要学会……
  16. ORA-1652: unable to extend temp segment by 128 in tablespace TEMP解决
  17. js截取url所带参数方法与url截取字段中包含中文会乱码的解决方案
  18. EXCEL多页打印时,上边框线无法显示
  19. 【Vue.js安装】
  20. HPE BL460c 配置536 FLB网卡VMware Esxi 6.0开启FCOE功能方法

热门文章

  1. java g1的并行_Java 11好用吗
  2. jq如何获取选中option的值_如何用jQuery获得select的值
  3. android调用文件管理器回调,Android中调用系统管理器选择文件并返回绝对路径
  4. java char i=2+#039;2#039;;_图说String(三)String中#039;+#039;和StringBuilder的区别
  5. 计算机在气象预测的应用,计算机在地面气象观测中的实际应用
  6. sql server中select语句需要申请的锁
  7. 四边形可以分为几类_大件物流有哪些公司?大件物流公司的业务可以分为哪几类...
  8. Android 存储路径浅析
  9. xutils retry error, curr request is null
  10. List遍历删除元素remove()