1. import random
  2. """
  3. 排序:将一组无序记录序列调整为有序记录序列
  4. 列表排序:将无序列表调整为有序列表
  5. 输入:列表
  6. 输出:有序列表
  7. 升序与降序
  8. 内置函数sort()
  9. """
  10. #冒泡排序 bubble Sort
  11. #1、列表每两个相邻的两个数,若前面比后面的大,则交换这个数
  12. #2、一趟排序完成后,则无序列表减少一个数,有序区增加一个数 ps 循环一次会筛选出最大值放置有序区,剩余无序区再循环
  13. def bubble_Sort(li):
  14. for i in range(len(li) - 1):# 第一次循环筛选出最大值
  15. for j in range(len(li) -i -1):
  16. if li[j] > li[j+1]:#--升序
  17. #if li[j] < li[j+1] -----降序
  18. li[j],li[j+1] = li[j+1],li[j]
  19. print (li)
  20. #生成100个0-1000的随机数的列表,
  21. #li = [random.randint(0,100) for i in range(10)]
  22. """li = [2,5,4,6,3,1,8,9,7]
  23. print(li)
  24. print("分割线--------------------")
  25. bubble_Sort(li)
  26. print(li)"""
  27.  
  28. """
  29. [2, 5, 4, 6, 3, 1, 8, 9, 7] ----------原列表
  30. 分割线--------------------
  31. [2, 4, 5, 3, 1, 6, 8, 7, 9]
  32. [2, 4, 3, 1, 5, 6, 7, 8, 9]
  33. [2, 3, 1, 4, 5, 6, 7, 8, 9]
  34. [2, 1, 3, 4, 5, 6, 7, 8, 9]
  35. [1, 2, 3, 4, 5, 6, 7, 8, 9]
  36. [1, 2, 3, 4, 5, 6, 7, 8, 9]
  37. [1, 2, 3, 4, 5, 6, 7, 8, 9]
  38. [1, 2, 3, 4, 5, 6, 7, 8, 9]
  39. [1, 2, 3, 4, 5, 6, 7, 8, 9]
  40. """
  41.  
  42. #冒泡优化,当一次循环没有发生任何交换,那么就认为列表已经被排好序了,就结束
  43. def bubble_Sort2(li):
  44. for i in range(len(li) - 1):# 第一次循环筛选出最大值
  45. exchange = False
  46. for j in range(len(li) -i -1):
  47. if li[j] > li[j+1]:#--升序
  48. #if li[j] < li[j+1] -----降序
  49. li[j],li[j+1] = li[j+1],li[j]
  50. exchange = True
  51. print (li)
  52. if not exchange:
  53. return
  54. li2 = [2,5,4,6,3,1,8,9,7]
  55. print(li2)
  56. print("分割线--------------------")
  57. bubble_Sort2(li2)
  58. print(li2)

  

py_冒泡排序的更多相关文章

  1. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  2. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  3. Html5 冒泡排序演示

    冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要 ...

  4. javascript冒泡排序

    数组冒泡排序算法(升序) 升序:小数在前,大数在后 冒泡排序的原则:每次比较相邻两个元素,如果前一个数>后一个数,说明违反升序的要求,就将两数交换位置.否则,保持不变.继续比较下一对. 例如:玩 ...

  5. Java中的经典算法之冒泡排序(Bubble Sort)

    Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...

  6. C#冒泡排序算法

    用了两种形式的数据,一个是泛型List,一个是数据int[].记录一下,作为自己学习过程中的笔记. using System; using System.Collections.Generic; us ...

  7. python排序之二冒泡排序法

    python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...

  8. 以冒泡排序为例--malloc/free 重定向stdin stdout

    esort.c 代码如下,可关注下mallloc/free,freopen重定向的用法,排序为每轮将最小的数放在最前面: #include<stdio.h> #include<mal ...

  9. 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)

    如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...

随机推荐

  1. PHP is_dir() 函数

    定义和用法 is_dir() 函数检查指定的文件是否是一个目录. 如果目录存在,该函数返回 TRUE. 语法 is_dir(file) 参数 描述 file 必需.规定要检查的文件. 提示和注释 注释 ...

  2. Ploya定理学习笔记

    由于自己的作息极其不规律导致比赛被打爆了 但是有的时候状态其实还行. 关于Ploya定理其实特别有意思 这里粘一个[dalao的blog](https://blog.csdn.net/lyc16355 ...

  3. 转)JVM Internals

    http://blog.jamesdbloom.com/JVMInternals.html (基于 Java 7)

  4. 使用hibernate validate做参数校验

    1.为什么使用hibernate validate ​ 在开发http接口的时候,参数校验是必须有的一个环节,当参数校验较少的时候,一般是直接按照校验条件做校验,校验不通过,返回错误信息.比如以下校验 ...

  5. Spring学习总结(8)-接口多个实现类的动态调用

    需求描述:当一个接口有2个以上的实现类时,调用方需要根据参数选择只其中一个实现类 Spring版本:5.1.8.RELEASE 1. 接口和实现类 /** * 接口 */ public interfa ...

  6. 强大的输入框-应用快速启动uTools

    uTools uTools是一个 极简.插件化.跨平台 的现代桌面软件.通过自由选配丰富的插件,打造你得心应手的工具集合. 当你熟悉它后,能够为你节约大量时间,让你可以更加专注地改变世界. uTool ...

  7. 034_go语言中的工作池

    代码演示 package main import "fmt" import "time" func worker(id int, jobs <-chan ...

  8. 033_go语言中的打点器

    代码演示 package main import "fmt" import "time" func main() { ticker := time.NewTic ...

  9. 解惑4:java是值传递还是引用传递

    一.概述 曾经纠结了很久java的参数传递方式是什么样的,后面粗略的了解了一鳞半爪以后有了大概的印象:"传参数就是值传递,传对象就是引用传递",后面进一步查找了相关资料和文章以后, ...

  10. CSS变化、过渡与动画

    CSS变换用于在空间中移动物体,而CSS过渡和CSS关键帧动画用于控制元素随时间推移的变化. 变换.过渡和关键帧动画的规范仍然在制定中.尽管如此,其中大多数特性已经在常用浏览器中实现了. 1.二维变换 ...