给出一个列表,进行冒泡排序

原理算法:

 li = [52, 37, 23, 11, 3, 1, ]

 print(li)

 # 每次循环,进行一次排序,列表内数字两两比较,最大的数字排到最末尾
# 一共循环len(li) - 1 次 for i in range(len(li) - 1):
if li[i] > li[i + 1]:
temp = li[i]
li[i] = li[i+1]
li[i + 1] = temp
print(li) for i in range(len(li) - 2):
if li[i] > li[i + 1]:
temp = li[i]
li[i] = li[i+1]
li[i + 1] = temp
print(li) for i in range(len(li) - 3):
if li[i] > li[i + 1]:
temp = li[i]
li[i] = li[i+1]
li[i + 1] = temp
print(li) for i in range(len(li) - 4):
if li[i] > li[i + 1]:
temp = li[i]
li[i] = li[i+1]
li[i + 1] = temp
print(li) for i in range(len(li) - 5):
if li[i] > li[i + 1]:
temp = li[i]
li[i] = li[i+1]
li[i + 1] = temp
print(li) '''
输出的结果:
[52, 37, 23, 11, 3, 1]
[37, 23, 11, 3, 1, 52]
[23, 11, 3, 1, 37, 52]
[11, 3, 1, 23, 37, 52]
[3, 1, 11, 23, 37, 52]
[1, 3, 11, 23, 37, 52]
'''

可以看到以上排序每次步骤一致,只有一个变量(即不用对比最后一个元素)

因此,可以再设置一个变量j, 作为循环时候的变量简化操作,由此得到:

 li = [52, 37, 23, 11, 3, 1, ]
print(li) for j in range(1, len(li)):
for i in range(len(li) - j):
if li[i] > li[i + 1]:
temp = li[i]
li[i] = li[i+1]
li[i + 1] = temp
print(li)
'''
结果:
[52, 37, 23, 11, 3, 1]
[37, 23, 11, 3, 1, 52]
[23, 11, 3, 1, 37, 52]
[11, 3, 1, 23, 37, 52]
[3, 1, 11, 23, 37, 52]
[1, 3, 11, 23, 37, 52]
'''

【Python全栈笔记】07 [模块二] 20 Oct 冒泡排序的更多相关文章

  1. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  2. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  3. Python全栈day21-22-23(模块)

    一,python的模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  4. 【Python全栈笔记】08 [模块二] 20 Oct 递归 -*** 待补充

    递归 引入 递归的表现形式 下面是四个函数,互相调用返回结果 # 引入 递归的表现形式 def f1(): ' def f2(): r = f1() return r def f3(): r = f2 ...

  5. 【Python全栈笔记】03 [模块二] 16-17 Oct 函数

    定义一个函数 def function_name(形式参数): 代码块 return 'Value' #如果没有写return,则默认返回None # 一个函数到return这一行就结束执行了,在re ...

  6. 【Python全栈笔记】01 [模块二] 14-15 Oct 运算符和字符串 4-1

    编码的问题 中文版 Windows 终端是默认GBK编码格式,python2默认为ASCII编码,虽然我们注释了需要用UTF-8,但是通过命令行运行的文件如果print中文内容还是会出现乱码. Uni ...

  7. 【Python全栈笔记】04 [模块二] 18 Oct lambda表达式, 内置函数

    lambda表达式 lambda表达式是函数的一种简化,如下面两种函数定义方法,实际上效果是一样的. 使用lambda表达式的函数,func2是函数名,lambda: 后面的123 即为返回值. de ...

  8. 【Python全栈笔记】05 [模块二] 19 Oct 文件的操作

    文件操作 一般步骤1. 文件打开 2. 文件操作 3. 文件关闭 1. 打开文件 使用open(文件名(绝对路径), 打开模式, 编码) 文件打开的模式有: r:  只读模式(默认) w: 只写模式 ...

  9. 【Python全栈笔记】03 [模块二] 16-17 Oct Set 集合,三目运算

    Set 集合 set - unordered collections of unique elements 创建一个set/一个空set # create a new set set1 = {1,2, ...

随机推荐

  1. nyoj 82 迷宫寻宝(二)

    http://acm.nyist.net/JudgeOnline/problem.php?pid=83 题目解法主要在于判断两线段是否相交,思路是穷举所有地图四周的点,其中每一个边界上的点和终点构成一 ...

  2. jQuery MiniUI开发系列之:UI和数据分离

    使用MiniUI需要注意:UI和数据是分离的. 传统的WEB开发,开发者经常将数据库操作.服务端业务.HTML标签写在一个页面内. 这样会造成开发的混乱,并且难以维护和升级. 使用MiniUI开发的时 ...

  3. MySQL 教程分享

    MySQL 教程 MySQL 安装 MySQL 管理与配置 MySQL PHP 语法 MySQL 连接 MySQL 创建数据库 MySQL 删除数据库 MySQL 选择数据库 MySQL 数据类型 M ...

  4. PowerDesigner设计时表显示注释选项

    PowerDesigner设计时表显示注释选项:选定编辑的表,右键- >Properties- >Columns- >Customize Columns and Filter(或直接 ...

  5. 2.4 ARM寻址方式

    所谓的寻址方式就是处理器指令中给出的信息来找到指令所需要的操作数的方式 1. 立即数寻址 立即数寻址,是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数,这个操作数被称为立即 ...

  6. RabbitMQ消息机制单人分发

    static void Main(string[] args) { // More.SendMessage(); var factory = new ConnectionFactory(); fact ...

  7. js 中文乱码解决方法

     bookManageAdd: function () {         top.MainFrameJS.confirm = true;         var action = getQueryS ...

  8. [转]常用的快速Web原型图设计工具

    转自大神: http://www.cnblogs.com/lhb25/archive/2009/04/25/1443254.html 做产品原型是非常重要的一个环节,做产品原型就会用使用各式各样的工具 ...

  9. Unity IOC简单认知

    看了不少IOC的文章.简单概念梳理下. 1.依赖,依赖倒置,控制反转(IOC),依赖注入 解释是仿照http://www.cnblogs.com/qqlin/archive/2012/10/09/27 ...

  10. iOS 获取应用版本信息

    现在许多接口都需要上传应用版本信息,所以呢,这个是必不可少的,可以在进入应用的时候先获取到,然后存在单例中,用的时候直接调用单例就好了,记住这些字符串 NSString *executableFile ...