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

原理算法:

 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. (转)Java:按值传递和按引用传递详细解说

    值传递和引用传递详解: 1:按值传递是什么 指的是在方法调用时,传递的参数是按值的拷贝传递.示例如下: public class TempTest { private void test1(int a ...

  2. 反转链表,时间复杂度O(n),空间复杂度O(1)

    原理:使用三个指针,p,q指向交换的元素,r指向后续元素 代码如下: class Node{ int data; Node next; Node(int data){ this.data=data; ...

  3. 黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate

    Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数 ...

  4. Linux下的shell编程(三)BY 四喜三顺

    正则表达式:-------------------------------------------------------------------------------------------^   ...

  5. ajaxpro返回值类型总结-DataTable(转)

    ajaxpro使用总结系列其他内容 ajaxpro ajaxmethod 重载调用问题 ajaxpro方法ajaxmethod调用示例 ajaxpro返回值类型总结-string,int ajaxpr ...

  6. CSSText属性批量修改样式

      给一个HTML元素设置css属性 var head= document.getElementById("head");head.style.width = "200p ...

  7. 浅谈数位DP

    在了解数位dp之前,先来看一个问题: 例1.求a~b中不包含49的数的个数. 0 < a.b < 2*10^9 注意到n的数据范围非常大,暴力求解是不可能的,考虑dp,如果直接记录下数字, ...

  8. Android 自定义表格显示数据

    Android 自定义TextView控件,用来组成表格方便数据的展示. 首先看一下效果 样式不是很好看,需要用的可以自己优化一下. 实现方式很简单. 1.自定义控件 MyTableTextView ...

  9. jQuery Validate + Ckeditor 驗證 textarea 解決方式

    jQuery Validate + Ckeditor 驗證 textarea 解決方式 html <textarea name="content" id="cont ...

  10. S2SH CRUD 整合

    采用的框架 Struts2+Spring4+Hbiernate4. 目录结构 :    EmployeeAction: package com.xx.ssh.actions; import java. ...