Python编程:排序算法之冒泡排序

简介: Python编程:排序算法之冒泡排序

列表排序


将无序列表变为有序列表

输入:无序列表

输出:有序列表

常见的排序算法

image.png

排序算法关键点:


有序区

无序区

冒泡排序


列表每两个相邻的数,如果前边的比后边的大,那么交换这两个数

代码实现

import random
# 冒泡排序,从小到大排序O(n^2)
def bubble_sort(lst):
    count = 0
    n = len(lst) - 1  # 9 总遍历次数,比序列总数少1
    for i in range(n): # 0-8
        for j in range(n-i): # 8-0
            if lst[j]>lst[j+1]:  # 前者比后者大则交换
                lst[j], lst[j+1] = lst[j+1], lst[j]
            count += 1
    print("count: %s", count)
# 冒泡排序改进,从小到大排序
def bubble_sort_1(lst):
    count = 0
    n = len(lst) - 1  # 9 总遍历次数,比序列总数少1
    for i in range(n): # 0-8
        exchange = False
        for j in range(n-i): # 8-0
            if lst[j]>lst[j+1]:  # 前者比后者大则交换
                lst[j], lst[j+1] = lst[j+1], lst[j]
                exchange = True
            count += 1
        if exchange==False:  # 如果遍历结束没有任何交换,说明已经有序
            break
    print("count: %s", count)
lst = list(range(10))
# random.shuffle(lst) #打乱顺序
bubble_sort(lst)
# count: %s 45
bubble_sort_1(lst)
# count: %s 9
print(lst)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

相关文章
|
3天前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
34 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
1天前
|
存储 数据采集 人工智能
探索Python编程之美——从基础到进阶
【9月更文挑战第9天】本文是一篇深入浅出的技术分享文章,旨在引导读者从零基础开始掌握Python编程。我们将通过生动的实例和代码示例,探讨Python的基本语法、数据结构、函数、模块以及面向对象编程等核心概念。无论你是初学者还是有一定经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python编程之旅吧!
16 11
|
2天前
|
Python
探索Python编程的奥秘:打造你的第一个程序
【9月更文挑战第8天】本文将带你进入Python编程的世界,通过一个有趣的项目——制作一个简单的猜数字游戏,让你快速入门。我们不仅会分享代码编写的步骤,还会讲解每一行代码的含义和作用,确保即使是编程新手也能跟上节奏。文章末尾附有完整代码,方便读者实践和学习。
19 12
|
3天前
|
API Python
探索Python中的多线程编程
探索Python中的多线程编程
22 5
|
3天前
|
Python
揭秘!Python系统编程里那些让代码自由穿梭的神奇代码行
【9月更文挑战第9天】在Python的世界里,一些简洁的代码行却蕴含着强大的功能,如列表推导式让列表生成仅需一行代码:`squares = [x**2 for x in range(10)]`。`with`语句则能自动管理文件和网络连接的关闭,如`with open('example.txt', 'r') as file:`。`lambda`函数和装饰器则允许快速定义函数和增强功能,而上下文管理器更是资源处理的利器。这些特性让Python代码更加优雅高效。
11 4
|
1天前
|
安全 数据安全/隐私保护 Python
Python系统编程实战:文件系统操作与I/O管理,让你的代码更优雅
【9月更文挑战第10天】Python不仅在数据分析和Web开发中表现出色,在系统编程领域也展现出独特魅力。本文将带你深入探讨Python中的文件系统操作与I/O管理,涵盖os、shutil和pathlib等模块的基础使用方法,并通过示例代码展示如何优雅地实现这些功能。通过掌握缓冲、异步I/O等高级特性,你将能够编写更高效、安全且易于维护的Python代码。示例包括使用pathlib遍历目录、设置缓冲区提升文件写入性能以及使用aiofiles实现异步文件操作。掌握这些技能,让你在Python系统编程中更加得心应手。
10 2
|
3天前
|
存储 Java 数据处理
深入骨髓的Python系统编程:文件系统操作与I/O管理,揭秘底层奥秘
【9月更文挑战第9天】本文通过问答形式深入探讨Python中文件系统操作与I/O管理的核心技巧,涵盖高效遍历文件系统、理解I/O缓冲机制、并行处理文件I/O以及关键异常处理方法。通过具体示例代码,展示了如何利用os和pathlib模块简化文件遍历,控制I/O缓冲,使用多进程提高处理效率,并妥善处理各种I/O异常,助你提升Python系统编程能力。
16 3
|
4天前
|
安全 开发者 Python
揭秘Python IPC:进程间的秘密对话,让你的系统编程更上一层楼
【9月更文挑战第8天】在系统编程中,进程间通信(IPC)是实现多进程协作的关键技术。IPC机制如管道、队列、共享内存和套接字,使进程能在独立内存空间中共享信息,提升系统并发性和灵活性。Python提供了丰富的IPC工具,如`multiprocessing.Pipe()`和`multiprocessing.Queue()`,简化了进程间通信的实现。本文将从理论到实践,详细介绍各种IPC机制的特点和应用场景,帮助开发者构建高效、可靠的多进程应用。掌握Python IPC,让系统编程更加得心应手。
12 4
|
6天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
|
6天前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。