冒泡算法Python实现
冒泡算法基本原理
依次比较两个数的大小,如果前面那个数字比后面的数字大就交换两个数字的位置。
代码实现
依据冒泡算法原理,我们来实现排序。
首先定义一个列表:
list = [12, 23, 98, 90, 80, 10, 98, 74]
使用if判断,进行排序
if list[j] > list[j + 1]:list[j], list[j + 1] = list[j + 1], list[j]
注意:这里的j表示索引,索引具体范围咱们现在还没有确定,所以没有具体写出。
下面我们分析索引,根据原理我们可以发现这个列表只需要比较7次即可,而列表长度是8,因此索引可以表示成列表长度减一。
for j in range(len(list) - 1 - i):if list[j] > list[j + 1]:list[j], list[j + 1] = list[j + 1], list[j]
这里我们实现了一次排序,这次排序可以得到列表中的最大值,列表中的最大值会放在列表末尾。
由上面分析我们不难看出只需要对这个列表多次进行排序就可以得到咱们想要的结果。那么我们需要对列表进行多少次上面这样的排序呢?
我们只需要排列列表长度减一次,因为最后一次排列是将两个最小的数字进行交换,所以不需要排列列表长度次数。
下面是代码实现:
list = [12, 23, 98, 90, 80, 10, 98, 74]
for i in range(len(list) - 1):for j in range(len(list) - 1 - i):if list[j] > list[j + 1]:list[j], list[j + 1] = list[j + 1], list[j]print(list)
代码运行结果如图所示:
冒泡算法Python实现相关推荐
- 用python实现冒泡算法
有这样一组数列: [7,6,5,4,3,9,8,2,1], 我们想排序成这样: [1,2,3,4,5,6,7,8,9]. 要怎么做呢?第一次,我们可以把9排到最右边. 最终结果就变成这样: [6, 5 ...
- python——冒泡算法
python--冒泡算法 1.定义: 实际上就是:对列表里的数字进行排序 2.举例: (1)使用关键字排序 升序格式:列表.sort() slist2 = [7,-9,11, -8, 98,35,17 ...
- python冒泡算法_python_冒泡算法
什么是冒泡算法? -- 像鱼吐泡泡一样,每次都是向上冒出一个水泡 如何逻辑整理? -- 先拿第一个值和剩下的值,一一比较,必能找到最大的或者最小的 -- 比较过程中,第一个值小于剩下的某个值,交换位置 ...
- python语言实现冒泡算法(附代码)
冒泡算法的基本原理就是让大的数冒泡冒到列表的最后,最大的排在最后一位,第二大的排到最后第二位,以此类推,直到整个列表遍历完整.具体的代码如下所示: num_list = [5,8,3,7,2,1,0, ...
- 数据结构与算法Python版MOOC笔记及练习【七】
文章目录 什么是顺序查找 算法分析 二分查找 冒泡算法思路 插入排序 谢尔排序 归并排序 快速排序 课程练习 什么是顺序查找 数据项保存在像列表这样的集合中,我们会称这些数据项具有线性或者顺序关系. ...
- python语言基本排序算法_排序算法(Python)
参考: <数据结构(Python 语言描述)> - 3.4 基本排序算法.3.5 更快的排序 Tips:为了保持简洁,每个函数都只处理整数列表,并且假设列表不为空. 目录.jpg 术语 1 ...
- 中文代码示例之冒泡算法, 后感
以前探讨过中文命名在业务部分的优势大于算法部分. 今天又一次看到了这个以冒泡算法的例子: 刘然:批判易语言的人是否用过这门语言,批判它的原因又是什么?有些感触. 先尝试对变量命名进行改进, 来看看是否 ...
- 棋盘最短路径 python_Dijkstra 最短路径算法 Python 实现
Dijkstra 最短路径算法 Python 实现 问题描述 使用 Dijkstra 算法求图中的任意顶点到其它顶点的最短路径(求出需要经过那些点以及最短距离). 以下图为例: 算法思想 可以使用二维 ...
- 2021-03-15 数据挖掘算法—K-Means算法 Python版本
数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...
最新文章
- ts转换mp4 linux_佳佳MPEG4格式转换器官方版下载-佳佳MPEG4格式转换器v6.5.5.0下载
- 学习规划|机器学习和NLP入门规划
- 传统与敏捷开发的真正区别
- Python打造一款多线程端口扫描器
- Windows Phone 8本地化多语言支持
- Oulipo HDU - 1686(哈希或KMP)匹配字符串
- 热度3年猛增20倍,Serverless云开发的技术架构全解析
- 【CodeForces - 227A】Where do I Turn? (计算几何,叉积判断直线拐向)
- android7.0如何自定义添加系统服务
- (转)一种高速内存校验算法(Delphi MMX优化算法应用之一)
- Use Data Caching Techniques to Boost Performance and Ensure Synchronization(转)
- 数据库,可不只是 CRUD!
- 一句话菜刀 php eval,如何基于菜刀PHP一句话实现单个文件批量上传?
- mysql轻量级的管理工具
- css3图片放大缩小过度动画
- 电子邮箱大全,邮箱品牌种类大全,邮箱排行榜怎么样?
- 京东高层重大调整!首设集团总裁职位,“二号人物”徐雷上位?
- 我终于解救了系统盘ORZ
- 《手把手教你读财报》- 读书总结
- 动态内存的分配与释放