应读者要求,写个基于递归的冒泡排序算法代码,之前发过的排序算法代码请参考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版基于递归的冒泡排序算法相关推荐

  1. Python版基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式

    基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式 按空格进入单人模式,按't'进入双人模式,双人模式下玛丽1采用空格键上跳,玛丽2采用方向上键上跳. 完整代码下载地址:Pyth ...

  2. 数据结构与算法 python版 之 递归三定律

    #数据结构与算法 python版 之 谢尔宾斯基三角形 , 树叉 1.为了向阿西莫夫的"机器人三定律"直径,递归算法也总结出"三定律" 1递归算法必须有一个基本 ...

  3. 图解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. ...

  4. 漫画算法python版下载_漫画排序算法Python实现

    冒泡排序 冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相邻元素时, 交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变. def bubbleSort(list): ran ...

  5. python:基于朴素贝叶斯算法的垃圾邮件过滤分类

    目录 一.朴素贝叶斯算法 1.概述 2.推导过程 二.实现垃圾邮件过滤分类 1.垃圾邮件问题背景 2.朴素贝叶斯算法实现垃圾邮件分类的步骤 3.python实现 参考学习网址:https://blog ...

  6. Python版插入排序算法

    问题描述:在插入排序算法中,把所有元素分为前面的已排序序列和后面的未排序序列两部分,每次处理未排序序列中的第一个元素,将其插入到前面已排序序列中的合适位置,从而不停地扩大已排序序列并缩小未排序序列,直 ...

  7. 连续投影算法-python版

    连续投影算法 - SPA python版 文章目录 连续投影算法 - SPA python版 原理 连续投影算法大量用于光谱特征波长选择中,翻遍全网,SPA算法只找到了MATLAB版本. 该版本为MA ...

  8. 【进阶二】Python实现(MD)VRPTW常见求解算法——自适应大邻域搜索算法(ALNS)

    基于python语言,实现经典自适应大邻域搜索算法(ALNS)对(多车场)带有时间窗的车辆路径规划问题( (MD) VRPTW )进行求解. 目录 往期优质资源 1. 适用场景 2. 求解效果 3. ...

  9. 【进阶四】Python实现(MD)HVRP常见求解算法——蚁群算法(ACO)

    蚁群算法+Split 求解异构车辆路径规划问题 目录 信息传递 1. 适用场景 2. 求解效果 3. 代码分析 4. 数据格式 5. 分步实现 6. 完整代码 参考 信息传递 python实现6种智能 ...

最新文章

  1. 区块链挖矿的钱从哪来 区块链挖矿怎么挣钱
  2. 驱动编程中的头文件与内核源码的关系
  3. java selenium (六) XPath 定位
  4. 出现could not find developer disk image解决办法和不受信任的开发者
  5. php输出图片没有,ThinkPHP里无法输出图片 设置响应头
  6. android accessibilityservice 被报病毒,无障碍功能AccessibilityService,卡顿,一直报warning...
  7. 基于Google Reader发展起来的个性化推荐系统之三大问题
  8. LeetCode 111二叉树的最小深度-简单
  9. java判断是否为linux,java判断是否Linux操作系统,判断OS操作系统类型工具类
  10. 20155226-虚拟机与Linux之初体验
  11. 图标字体化 android,Android 优化 图标文字 iconfont
  12. 射频(RF)和微波电路发展简史(一)
  13. Auto CAD绘制基准符号的方法
  14. 程序员转正述职报告_程序员个人述职报告范文4篇(整理版)
  15. C语言程序——首字母变大写
  16. Linux中断子系统(一)中断控制器GIC架构
  17. 人工智能:智慧环保(上海AI智慧环保,绿色新时代)
  18. USB摄像头测试网址
  19. Android简易计分器
  20. 提炼函数(Extract Method)

热门文章

  1. java 开源地图引擎_开源三维地图框架-Cesium
  2. am5728 是否支持aarch64_AM5728高性能音视频处理开发板介绍
  3. html js url 跳转页面内容,js跳转页面方法总结
  4. html5背景切换效果,html5 游戏背景切换
  5. mysql 出现 quot_mysql 出现 quot;the table is fullquot;的问题 - tmuffamd - ITeye博客
  6. 双电容单相电机接线图解_单相电机要用电容,三相电机为何不需要?
  7. nginx.conf配置文件简单说明
  8. 多元有序logistic回归_R语言多元Logistic逻辑回归 应用案例
  9. 只用一行代码,就导入Python所有库
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的高考志愿填报管理系统