排序

1、冒泡排序

冒泡算法

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

打印后的效果为:

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

改进后的冒泡算法:

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

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

import random         # 随机模块
import time def cal_time(func): # 装饰器 ,用来检测算法所执行的时间
def wrapper(*args,**kwargs):
t1=time.time()
result=func(*args,**kwargs)
t2=time.time()
print("%s running time: %s secs." %(func.__name__,t2-t1))
return result
return wrapper @cal_time
def bubble_sort(li): ###################################冒泡排序#####################################
for i in range(len(li)-1): # 多少趟
for j in range(len(li)-i-1): #一趟里多少次
if li[j]>li[j+1]: # 升序排列 " < " 为降序排列
li[j],li[j+1]=li[j+1],li[j] # 互换数
# data=list(range(1000)) # 1000个数
# random.shuffle(data) # 打乱这个序列
# bubble_sort(data) # 将打乱后的序列传送到冒泡算法函数
# print(data) # 打印排序后的序列 @cal_time
def bubble_sort_1(li): # 上个算法的改进,用于极端情况,例如已经拍好的序列
for i in range(len(li)-1):
exchange=False
for j in range(len(li)-i-1):
if li[j]>li[j+1]:
li[j],li[j+1]=li[j+1],li[j]
exchange=True
if not exchange:
break
data=list(range(1000))
random.shuffle(data)
bubble_sort(data)
bubble_sort_1(data)
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. MVC 中创建简单过滤器

    1.新建一个类,继承自 ActionFilterAttribute类,并重写OnActionExecuting()方法 public class LoginFilter:ActionFilterAtt ...

  2. jQuery数据表格控件boostrap-table

    表格初始化js代码 function TableInit() { $("#edit").attr({"disabled":"disabled" ...

  3. 【Java】自动获取某表某列的最大ID数

    使用场景: 当需要往数据库插入数据时,表的主键需要接着已经有的数据后面进行自增.比如已经wq_customer表里,主键为TBL_ID,如果是空表,那么插入的数据TBL_ID设置为1,如果已经有n条数 ...

  4. (转)slf4j+logback将日志输出到控制台

    因为博主不允许转载...这边做链接记录 http://blog.csdn.net/gsycwh/article/details/52972946

  5. BZOJ4923 K小值查询(splay)

    容易想到建一棵平衡树,修改时打上标记即可.但是修改会导致平衡树结构被破坏.注意到实际上只有[k+1,2k)这一部分数在平衡树中的位置会被改变,所以对这一部分暴力修改,因为每次都会使其至少减小一半,复杂 ...

  6. CF Playrix Codescapes Cup Problems Analysis

    A 理清思路模拟 B 先对3个array排序,然后每次从某个array的头删数,可保证每个数必被处理1次,O(n log n) (set维护也行) C 分3类情况讨论,一种为: p1≤p2 & ...

  7. certutil在渗透测测试中的使用技巧

    certutil在渗透测测试中的使用技巧                                    0x01 前言 最近在Casey Smith‏ @subTee的twitter上学到了关 ...

  8. Asp.Net保存session的三种方法 (Dll文件更新导致session丢失的解决办法)

    1. InProc模式(默认值):asp.net将session保存到当前进程中,这种方式最快,但是不能多台服务器共享session,且会话状态数据容易丢失. <sessionState mod ...

  9. 【spoj】DIVCNTK

    Portal -->Spoj DIVCNTK Solution 这题的话其实是..洲阁筛模板题?差不多吧 题意就是给你一个函数\(S_k(x)\) \[ S_k(n)=\sum\limits_{ ...

  10. Hibernate持久化对象修改id重新保存的办法

    Hibernate持久化对象修改id重新保存的办法——Hibernate学习记录二 2017年11月10日 20:16:48 筱光 阅读数:1122   版权声明:本文为博主原创文章,未经博主允许不得 ...