面试的时候经常有面试官喜欢问如何进行冒泡排序?这个问题相信可以难倒一批的同学,本篇就详细讲解如何用python进行冒泡排序。

基本原理

01概念:

冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。

它重复地走访过要排序的数列,一次要比较两个元素,如果这两个元素的顺序错误就将他们两个交换过来。走访数列的工作是重复进行的,直到没有再需要交换的元素,也就说该数列已经完成排序了。

这个算法名字的由来就是因为大的元素会通过交换慢慢“浮”到数列的顶端。

02算法原理:

冒泡排序算法的运作如下:(从后向前)

  • 比较相邻的两个数,如果第一个数比第二个数大,则两数交换。
  • 对之后的相邻元素进行同样的工作,从开始到最后一对,这样进行一次排序后,数据的最后一位会是最大值 ,第一次循环进行的次数为 arr.length-1。
  • 之后对所有的元素重复以上的步骤,且以后每次循环的次数为arr.length-1-i (i为循环第几次 ,i 从零开始);
  • 重复上述步骤,直到排序完成。

交换两个数

1.如果a = 10 , b = 20如何交换两个数呢?

2.实现两个数的交换原理其实很简单,设一个临时变量c就可以了:

>先把a的值传给c,此时c的值就是10了,a的值还是10

>然后把b的值传给a,此时a的值是20,b的值还是20

>最后把c的值传给b, 此时b的值是10

3.python里面交换两个数不用那么复杂,用这个方法就行了:

>a , b = b, a

遍历比较相邻的数

1.比如一个队列是:[1, 3, 10, 9, 21, 35, 4, 6]

2.可以做一次遍历,比较相邻的数,后面的数比前面的数小就交换,这样第一次遍历可以把最大的数下沉到最后一个位置。

循环下沉

1.与上面的遍历做比较就只做了一次下沉,把最大的数下沉到最后一个位置上,那接下来就需要把第二大的数,下沉到倒数的第二个位置,依次循环,一直到最小的数在最前面。

2.这里s是先计算li队列的长度,然后把range函数反转了,变成:[7, 6, 5, 4, 3, 2, 1, 0]

sort()排序

说实话,python里面排序只用一个函数就可以搞定:sort()

参考代码


以上是python笔记1—冒泡排序的全部内容,如果觉得对你有帮助,可以添加“收藏”!

如果还有疑问的地方,欢迎评论留言给我们~

c++ 冒泡排序_干货|python笔记1-冒泡排序相关推荐

  1. [转载] 使用python完成冒泡排序_使用python实现-冒泡排序

    参考链接: 在Python中进行冒泡排序Bubble Sort 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换 ...

  2. python 网页版笔记_【Python笔记】Python网页正文抽取工具

    本文信息本文由方法SEO顾问发表于2016-05-2018:48:27,共 1153 字,转载请注明:[Python笔记]Python网页正文抽取工具_[方法SEO顾问],如果我网站的文章对你有所帮助 ...

  3. python微信公众号翻译功能_自学Python笔记:给微信公众号搭建“成绩查询”功能...

    原标题:自学Python笔记:给微信公众号搭建"成绩查询"功能 期末考试 临近年末,全国各地都在上演一场大戏<期末考试>,考完试无论什么样的结果总想尽快看到自己一个学期 ...

  4. python中词云pic_path是什么_自学Python笔记:打造我的第一个词云

    原标题:自学Python笔记:打造我的第一个词云 两会词云 "词云"是对文本中出现频率较高的"关键词"予以视觉上的突出,形成"关键词云层"或 ...

  5. python遍历数组冒泡排序_经典排序算法(冒泡排序,选择排序,插入排序,快速排序,堆排序)python实现...

    最近在复习经典排序算法,自己用python也实现了一下,这里不会涉及到原理(因为网上方法已经很详细啦),就把函数贴上来,可以让大家自己试着运行下,再结合别处的原理也可以更好地理解它们的实现. 如果有错 ...

  6. python进阶之学习笔记_干货 | Python进阶系列之学习笔记(四)

    目录 Python条件判断 Python循环语句 Python循环控制 迭代器与生成器 异常 一.Python 条件判断 如果某些条件满足,才能做某件事情:条件不满足时,则不能做,这就是所谓的判断. ...

  7. python进阶之学习笔记_干货 | Python进阶系列之学习笔记(二)

    目录 对象 字符串 一.对象 (1)什么是对象 在python中一切都是对象,每个对象都有三个属性分别是,(id)身份,就是在内存中的地址,类型(type),是int.字符.字典(dic).列表(li ...

  8. 利用python实现冒泡排序_利用python实现冒泡排序

    1.先生存一个随机数组成的list 2.然后进行排序,把大的元素放在后面,小的元素放在前面,最终实现从小到大排列 首先生存一个随机数组成的list import random # print(sys. ...

  9. python冒泡排序_5种python方法实现冒泡排序可视化:Bubble Sort Visualizer

    1 说明: ===== 1.1 冒泡排序: 1.1.1 原理:比较两个相邻的元素,将值大的元素交换至右端. 1.1.2 来源:由来是因为越大的元素会经由交换慢慢"浮"到数列的顶端, ...

最新文章

  1. pythonrgbd图片像素对齐_利用pyrealsense获取深度图,并进行像素对齐
  2. Linux系统是否能够联网
  3. Gluon.vision的几类数据集
  4. Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
  5. hdu 4284 floyd+暴搜
  6. Java面试通关要点汇总集答案(七)——equals 与 == 的区别 List 和 Set 区别
  7. 数据可视化系列(六):场景案例显神通
  8. 通讯簿电话号码同步相关问题
  9. python培训一般多久_零基础学python需要多久
  10. 1.24 Java周末总结 ①乘法数据的溢出 ②测试random随机数几率是否相等 ③判断字符串是否为纯数字...
  11. 用 65 行代码实现 JavaScript 动画序列播放
  12. geohash美团附近酒店搜索-技术方案
  13. java中src_java中garadle工程没有src问题
  14. latex 引用网页 网址 网站 格式
  15. 星球大战telnet_重制星球大战:第四集(1977)
  16. 码织匠C语言程序设计,“C语言程序设计”课程的教学资源融合建设研究
  17. sigmoid 激励函数
  18. 微信小程序SEO优化策略
  19. Wireshark网络流量分析工具
  20. qt linux不能读写u盘文件,Qt读取U盘文件内容

热门文章

  1. JDK5.0新特性之:泛型
  2. 让Apache支持Wap网站
  3. Start Instance 操作详解 - 每天5分钟玩转 OpenStack(31)
  4. 有道智能学习灯 初体验
  5. USB 摄像头成熟方案介绍
  6. HALCON示例程序class_ndim_norm.hdev基于多通道图像的分类
  7. 学习笔记(22):Python网络编程并发编程-什么是线程
  8. vscode可以打开jupyternotebook吗_刚刚,官方宣布 VS Code 支持 Python 全开发了!
  9. 灰度图像的8位平面分解
  10. Pytorch 自定义激活函数前向与反向传播 ReLu系列 含优点与缺点