排序

1、冒泡排序

冒泡算法

  1. import random # 随机模块
  2. def bubble_sort(li): ###################################冒泡排序#####################################
  3. for i in range(len(li)-1): # 多少趟
  4. for j in range(len(li)-i-1): #一趟里多少次
  5. if li[j]>li[j+1]: # 升序排列 " < " 为降序排列
  6. li[j],li[j+1]=li[j+1],li[j] # 互换数
  7. data=list(range(1000)) # 1000个数
  8. random.shuffle(data) # 打乱这个序列
  9. bubble_sort(data) # 将打乱后的序列传送到冒泡算法函数
  10. print(data) # 打印排序后的序列

打印后的效果为:

``````````````````````

改进后的冒泡算法:

  1. import random
  2. def bubble_sort_1(li): # 上个算法的改进,用于极端情况,例如已经拍好的序列
  3. for i in range(len(li)-1):
  4. exchange=False
  5. for j in range(len(li)-i-1):
  6. if li[j]>li[j+1]:
  7. li[j],li[j+1]=li[j+1],li[j]
  8. exchange=True
  9. if not exchange: # 如果没有交换就直接退出
  10. break
  11. data=list(range(1000))
  12. random.shuffle(data)
  13. bubble_sort_1(data)
  14. print(data)

改进前和改进后的冒泡算法进行对比:

  1. import random # 随机模块
  2. import time
  3.  
  4. def cal_time(func): # 装饰器 ,用来检测算法所执行的时间
  5. def wrapper(*args,**kwargs):
  6. t1=time.time()
  7. result=func(*args,**kwargs)
  8. t2=time.time()
  9. print("%s running time: %s secs." %(func.__name__,t2-t1))
  10. return result
  11. return wrapper
  12.  
  13. @cal_time
  14. def bubble_sort(li): ###################################冒泡排序#####################################
  15. for i in range(len(li)-1): # 多少趟
  16. for j in range(len(li)-i-1): #一趟里多少次
  17. if li[j]>li[j+1]: # 升序排列 " < " 为降序排列
  18. li[j],li[j+1]=li[j+1],li[j] # 互换数
  19. # data=list(range(1000)) # 1000个数
  20. # random.shuffle(data) # 打乱这个序列
  21. # bubble_sort(data) # 将打乱后的序列传送到冒泡算法函数
  22. # print(data) # 打印排序后的序列
  23.  
  24. @cal_time
  25. def bubble_sort_1(li): # 上个算法的改进,用于极端情况,例如已经拍好的序列
  26. for i in range(len(li)-1):
  27. exchange=False
  28. for j in range(len(li)-i-1):
  29. if li[j]>li[j+1]:
  30. li[j],li[j+1]=li[j+1],li[j]
  31. exchange=True
  32. if not exchange:
  33. break
  34. data=list(range(1000))
  35. random.shuffle(data)
  36. bubble_sort(data)
  37. bubble_sort_1(data)
  38. print(data)

打印后的效果为

``````````````````````

LOW逼三人组(一)----冒泡算法的更多相关文章

  1. LOW逼三人组(二)----选择排序算法

    选择排序思路: 算法程序: def cal_time(func): # 装饰器 ,用来检测算法所执行的时间 def wrapper(*args,**kwargs): t1=time.time() re ...

  2. LOW逼三人组(三)----插入排序

    插入排序思路 插入排序算法: import random # 随机模块 import time def cal_time(func): # 装饰器 ,用来检测算法所执行的时间 def wrapper( ...

  3. low逼三人组、nb二人组、归并、希尔排序----小结

  4. 排序算法之low B三人组

    排序low B三人组 列表排序:将无序列表变成有充列表 应用场景:各种榜单,各种表格,给二分法排序使用,给其他算法使用 输入无序列表,输出有序列表(升序或降序) 排序low B三人组 1. 冒泡排序 ...

  5. 算法之排序Low B三人组

    有序区:有的地方的数据已经完全变得有顺序,我们把这部分区域的数据成为有序区无序区:有的地方的数据依旧无序,我们把这部分数据成为无序区时间复杂度:用来估计算法运行时间的一个式子(单位)空间复杂度:用来评 ...

  6. 1、算法介绍,lowB三人组,快速排序

    1.什么是算法 2.递归 # 一直递归,递归完成再打印 def func4(x): if x > 0: func4(x - 1) print(x) func4(5) 3.时间 复杂度 (1)引入 ...

  7. 算法 排序lowB三人组 冒泡排序 选择排序 插入排序

    参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...

  8. 算法排序-NB三人组

    快速排序: 堆排序: 二叉树: 两种特殊二叉树: 二叉树的存储方式: 小结: 堆排序正题: 向下调整: 堆排序过程: 堆排序-内置模块: 扩展问题topk: 归并排序: 怎么使用: NB三人组小结

  9. python 内置函数,匿名函数,sorted,filter,map,递归,二分法,冒泡算法 eval

    ############################总结#################################1. lambda 匿名函数 语法——lambda 参数:返回值 __na ...

随机推荐

  1. 【leetcode】300.Longest Increasing Subsequence

    Given an unsorted array of integers, find the length of longest increasing subsequence. For example, ...

  2. angular 数据内容有重复时不显示问题

    <body ng-app="app"> <div ng-controller="myctl"> <ul> <li ng ...

  3. Spring Boot 初步小结

    Spring Boot 是一种开发模式,不涉及任何新的技术 1.了解自动配置的原理 2.常用application.yml文件的配置项 3.Spring Boot 及 第三方提供的各种 starter ...

  4. Authenticator及AuthenticationStrategy

    Authenticator的职责是验证用户帐号,是Shiro API中身份验证核心的入口点: 如果验证成功,将返回AuthenticationInfo 验证信息:此信息中包含了身份及凭证:如果验证失败 ...

  5. http2.0可行性研究

     一.http2比http1有了更多新特性 1.使用了多路复用的技术,并发量支持比http1大几个数量级: 2.二进制分帧,改善网络延迟情况,提高传输速率: 3.支持header的数据压缩,数据体积变 ...

  6. 管理与技术未必不可兼得,一个20年IT老兵的码农生涯

    作者|康德胜 我是一个喜欢写代码但几乎不太有机会写代码的CTO,也是一个看得懂财务报表.通过所有CFA(金融特许分析师)考试并获得FRM(金融风险经理)认证的拿到金融MBA的CTO,如果我有幸被称作码 ...

  7. 应用程序的日志通过rsyslog推送到syslog服务器

    centos5系列系统自带为syslog1.4.1 centos6系列自带rsyslog版本为5.8.10 centos7系列自带rsyslog版本为7.4.7 目前最新版rsyslog为8.27.0 ...

  8. django 表单验证和字段验证

    表单验证和字段验证 表单验证发生在数据验证之后.如果你需要自定义这个过程,有几个不同的地方可以修改,每个地方的目的不一样.表单处理过程中要运行三种类别的验证方法.它们通常在你调用表单的is_valid ...

  9. Linux之选取信息命令介绍与应用20170331

    在介绍选取信息命令之前,说一下管道符“|”与tr命令,因为在使用多个命令一起的时候经常用到它. 一.利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入. ...

  10. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) F dfs序+树状数组

    Performance ReviewEmployee performance reviews are a necessary evil in any company. In a performance ...