冒泡排序

思想

​ 列表中有n个数, 每两个相邻的数, 如果前边的数比后边的数大, 就交换.

关键点:

: 总共执行 n-1趟

无序区: 第 i 趟时, 索引 0~ n-1-i 为无序区

优化:

​ 如果执行一趟没有交换, 则列表已是有序, 可以直接结束.

import random
from cal_time import get_running_time @get_running_time
def bubble_sort(li): n = len(li) for i in range(n - 1): # 执行n-1趟 # 记录执行一趟中是否有交换
exchange = 0 for j in range(n - 1 - i): # 第i趟中的无序区为 0~n-1-i
if li[j] > li[j + 1]:
li[j], li[j + 1] = li[j + 1], li[j]
exchange = 1 if not exchange:
return li return li li = [i for i in range(0, 1000, 4)]
random.shuffle(li)
print(li)
print(bubble_sort(li))

python---冒泡排序的实现的更多相关文章

  1. python冒泡排序算法的实现代码

    python冒泡排序算法的实现代码 这篇文章主要介绍了python冒泡排序算法的实现代码,大家参考使用 1.算法描述: (1)共循环 n-1 次 (2)每次循环中,如果 前面的数大于后面的数,就交换 ...

  2. 冒泡排序的思想 python 冒泡排序、递归排序

    冒泡排序的时间复杂度是O(N^2) 冒泡排序的思想: 每次比较两个相邻的元素, 如果他们的顺序错误就把他们交换位置 比如有五个数: 12, 35, 99, 18, 76, 从大到小排序, 对相邻的两位 ...

  3. python 冒泡排序,快排

    一.冒泡排序 1.1.冒泡的原理 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的 ...

  4. Python—冒泡排序算法

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

  5. Python冒泡排序算法及其优化

    冒泡排序 所谓冒泡,就是将元素两两之间进行比较,谁大就往后移动,直到将最大的元素排到最后面,接着再循环一趟,从头开始进行两两比较,而上一趟已经排好的那个元素就不用进行比较了.(图中排好序的元素标记为黄 ...

  6. C++/Python冒泡排序与选择排序算法详解

    冒泡排序 冒泡排序算法又称交换排序算法,是从观察水中气泡变化构思而成,原理是从第一个元素开始比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较,就仿佛气泡逐渐从水底逐渐冒升到水面一样. ...

  7. python 冒泡排序

    冒泡排序: 相邻的两个数字先进行比较,也就是li[0]和li[1]进行比较,如果不是大于的关系,就继续依次进行li[1]和li[2]比较,进行交换然后每一次扫描得到的新列表如下: li = [11,2 ...

  8. Python冒泡排序

    冒泡排序,顾名思义,按照一定的规则,把数据一直排下去 直接上代码 import random def bubblesort(data): for i in range(len(data)-1,1,-1 ...

  9. python 冒泡排序,递归

    冒泡排序:li = [33, 55, 58, 66, 58, 555,20000000000000000000000, 5555,5555, 5, 6, 62,1]for i in range(1,l ...

  10. python --- 冒泡排序算法

    别想太多了,这个冒泡排序就是我们脑海中想到的那个冒泡,就好像是气泡一样,较小的元素比较轻,从而要往上浮出来, 冒泡排序算法. 要对‘气泡’序列处理若干遍.所谓一遍处理,就是自底向上检查一遍这个序列,并 ...

随机推荐

  1. 分布式 PostgreSQL 集群(Citus),官方快速入门教程

    多租户应用程序 在本教程中,我们将使用示例广告分析数据集来演示如何使用 Citus 来支持您的多租户应用程序. 注意 本教程假设您已经安装并运行了 Citus. 如果您没有运行 Citus,则可以使用 ...

  2. SpringBoot——两种传参方式

    ?传参 举例:http://localhost:8082/news/asset/getDatas?page=1&keyWord=123&year=2020 注解:@RequestPar ...

  3. collections 数据类型扩展模块

    在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtuple和Ord ...

  4. 内网穿透工具--frp

    对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题. 今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy.FRP 是一个使用 ...

  5. [USACO08OPEN]牛的街区Cow Neighborhoods

    题目描述: luogu 题解: 技巧题. 曼哈顿距离:$|x1-x2|+|y1-y2|$ 切比雪夫距离:$\max(|x1-x2|,|y1-y2|)$ 曼哈顿距离转切比雪夫距离:$(x,y)-> ...

  6. Redis数据库的初步认识(二)-C/C++连接redis数据库

    1用C语言连接数据库,首先要安装c语言的数据库 在目录/redis- 4.0.1/deps下面执行sudo make/make install命令 在执行完之后可能执行ldconfig命令来更新连接符 ...

  7. CentOS6跟CentOS7的区别

    1.CentOS6在/etc/profile配置环境变量是JAVAHOME,CentOS7是{JAVA_HOME} 2.

  8. char型变量中能不能存储一个中文字符?为什么?

    char型变量是用来存储Unicode编码的字符的,Unicode编码字符集中包含了汉字,因此char型变量中可以存储汉字.不过,如果某个特殊的汉字没有被包含在Unicode编码字符集中,那么,这个c ...

  9. hook(v16.7测试)?

    在无状态组件(如函数式组件)中也能操作state以及其他react特性, 通过useState

  10. Python包装器

    def func(): print("func body") def f1(arg): print("f1:",arg) def wrapper(b): pri ...