Python版基于递归的冒泡排序算法
应读者要求,写个基于递归的冒泡排序算法代码,之前发过的排序算法代码请参考Python版快速排序算法,Python版选择排序算法,Python版冒泡法排序算法。
from random import randint
def bubbleSort(lst, end=None, reverse=False):
if end==None:
length = len(lst)
else:
length = end
if length<=1:
return
#flag用来标记本次扫描过程中是否发生了元素的交换
flag = False
for j in range(length-1):
#比较相邻两个元素大小,并根据需要进行交换
#默认升序排序
exp = 'lst[j] > lst[j+1]'
#如果reverse=True则降序排序
if reverse:
exp = 'lst[j] < lst[j+1]'
if eval(exp):
lst[j], lst[j+1] = lst[j+1], lst[j]
flag = True
#如果没有发生元素交换,则表示已按序排列
if flag==False:
return
else:
#对剩余的元素进行排序
bubbleSort(lst, length-1, reverse)
#测试
lst = [randint(1, 100) for i in range(20)]
print('Before sort:\n', lst)
#升序排序
bubbleSort(lst)
#降序排序
#bubbleSort(lst, reverse=True)
print('After sort:\n', lst)
Python版基于递归的冒泡排序算法相关推荐
- Python版基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式
基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式 按空格进入单人模式,按't'进入双人模式,双人模式下玛丽1采用空格键上跳,玛丽2采用方向上键上跳. 完整代码下载地址:Pyth ...
- 数据结构与算法 python版 之 递归三定律
#数据结构与算法 python版 之 谢尔宾斯基三角形 , 树叉 1.为了向阿西莫夫的"机器人三定律"直径,递归算法也总结出"三定律" 1递归算法必须有一个基本 ...
- 图解leetcode初级算法python版 pdf_图解LeetCode初级算法(Python版)
第1章 浅谈算法 1.1 算法概述 1.2 度量算法 1.2.1 时间复杂度 1.2.2 空间复杂度 1.3 Python&Pythonic 第2章 基础算法之排序 2.1 冒泡排序 2.1. ...
- 漫画算法python版下载_漫画排序算法Python实现
冒泡排序 冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相邻元素时, 交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变. def bubbleSort(list): ran ...
- python:基于朴素贝叶斯算法的垃圾邮件过滤分类
目录 一.朴素贝叶斯算法 1.概述 2.推导过程 二.实现垃圾邮件过滤分类 1.垃圾邮件问题背景 2.朴素贝叶斯算法实现垃圾邮件分类的步骤 3.python实现 参考学习网址:https://blog ...
- Python版插入排序算法
问题描述:在插入排序算法中,把所有元素分为前面的已排序序列和后面的未排序序列两部分,每次处理未排序序列中的第一个元素,将其插入到前面已排序序列中的合适位置,从而不停地扩大已排序序列并缩小未排序序列,直 ...
- 连续投影算法-python版
连续投影算法 - SPA python版 文章目录 连续投影算法 - SPA python版 原理 连续投影算法大量用于光谱特征波长选择中,翻遍全网,SPA算法只找到了MATLAB版本. 该版本为MA ...
- 【进阶二】Python实现(MD)VRPTW常见求解算法——自适应大邻域搜索算法(ALNS)
基于python语言,实现经典自适应大邻域搜索算法(ALNS)对(多车场)带有时间窗的车辆路径规划问题( (MD) VRPTW )进行求解. 目录 往期优质资源 1. 适用场景 2. 求解效果 3. ...
- 【进阶四】Python实现(MD)HVRP常见求解算法——蚁群算法(ACO)
蚁群算法+Split 求解异构车辆路径规划问题 目录 信息传递 1. 适用场景 2. 求解效果 3. 代码分析 4. 数据格式 5. 分步实现 6. 完整代码 参考 信息传递 python实现6种智能 ...
最新文章
- 区块链挖矿的钱从哪来 区块链挖矿怎么挣钱
- 驱动编程中的头文件与内核源码的关系
- java selenium (六) XPath 定位
- 出现could not find developer disk image解决办法和不受信任的开发者
- php输出图片没有,ThinkPHP里无法输出图片 设置响应头
- android accessibilityservice 被报病毒,无障碍功能AccessibilityService,卡顿,一直报warning...
- 基于Google Reader发展起来的个性化推荐系统之三大问题
- LeetCode 111二叉树的最小深度-简单
- java判断是否为linux,java判断是否Linux操作系统,判断OS操作系统类型工具类
- 20155226-虚拟机与Linux之初体验
- 图标字体化 android,Android 优化 图标文字 iconfont
- 射频(RF)和微波电路发展简史(一)
- Auto CAD绘制基准符号的方法
- 程序员转正述职报告_程序员个人述职报告范文4篇(整理版)
- C语言程序——首字母变大写
- Linux中断子系统(一)中断控制器GIC架构
- 人工智能:智慧环保(上海AI智慧环保,绿色新时代)
- USB摄像头测试网址
- Android简易计分器
- 提炼函数(Extract Method)
热门文章
- java 开源地图引擎_开源三维地图框架-Cesium
- am5728 是否支持aarch64_AM5728高性能音视频处理开发板介绍
- html js url 跳转页面内容,js跳转页面方法总结
- html5背景切换效果,html5 游戏背景切换
- mysql 出现 quot_mysql 出现 quot;the table is fullquot;的问题 - tmuffamd - ITeye博客
- 双电容单相电机接线图解_单相电机要用电容,三相电机为何不需要?
- nginx.conf配置文件简单说明
- 多元有序logistic回归_R语言多元Logistic逻辑回归 应用案例
- 只用一行代码,就导入Python所有库
- 基于JAVA+SpringMVC+Mybatis+MYSQL的高考志愿填报管理系统