python-冒泡排序

news2024/12/23 1:37:46

冒泡排序 (稳定) O(n^2)
(稳定:表示相等的数,相对位置会不会改变)
冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的元素,比较相邻两个元素的大小并交换它们,从而将最大(或最小)的元素逐步移到最后。以下是 Python 中冒泡排序的实现:
在这里插入图片描述

代码示例:

list=[1,4,3,9,8]
for i in range(0,len(list)-1):
    for j in range(0,len(list)-1-i):
        if list[j]>list[j+1]:
            list[j],list[j+1]=list[j+1],list[j]
print(list)

结果显示:
在这里插入图片描述

我的理解:
冒泡排序的思想相对简单,可以通过以下方式进行简单理解:

  1. 比较相邻元素: 从数组的第一个元素开始,依次比较相邻的两个元素。

  2. 交换元素位置: 如果前面的元素比后面的元素大(升序排序),则交换它们的位置,将较大的元素移到后面。

  3. 遍历整个数组: 继续进行上述比较和交换的操作,直到遍历整个数组。

  4. 一轮完成: 这样一轮的操作之后,数组中最大的元素已经被移到了最后。

  5. 重复操作: 重复上述步骤,每一轮都将数组中当前未排序的最大元素移到了正确的位置。

  6. 排序完成: 当数组中不再存在需要交换的元素时,排序完成。

示例理解:

考虑数组 [64, 34, 25, 12, 22, 11, 90]

  • 第一轮:

    • 比较并交换 64 和 34,得到 [34, 64, 25, 12, 22, 11, 90]
    • 比较并交换 64 和 25,得到 [34, 25, 64, 12, 22, 11, 90]
    • 比较并交换 11 和 90,得到 [34, 25, 12, 22, 11, 64, 90]
  • 第二轮:

    • 比较并交换 11 和 64,得到 [34, 25, 12, 22, 11, 64, 90]
  • 第三轮:

    • 比较并交换 11 和 34,得到 [25, 12, 22, 11, 34, 64, 90]
  • 以此类推,最终得到有序数组 [11, 12, 22, 25, 34, 64, 90]

虽然冒泡排序的性能相对较低,但通过上述简单的比较和交换操作,我们可以将较大的元素逐步“浮”到数组的末尾,从而实现排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1246048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

周转箱与工具柜的智能化应用

在当今制造业激烈竞争的市场中,6S管理方法作为提高企业竞争力的有力工具,与精益生产中的周转箱和工具柜相结合,将为企业带来更大的优势。通过实施6S管理方法,企业不仅能够提高生产效率、降低成本,还能够改善产品质量、…

​ 一文带你了解多文件混淆加密

​🔒 一文带你了解多文件混淆加密 目录 🔒 一文带你了解 JavaScript 多文件混淆加密 ipaguard加密前 ipaguard加密后 ​ 🔒 一文带你了解 JavaScript 多文件混淆加密 JavaScript 代码多文件混淆加密可以有效保护源代码不被他人轻易盗取。…

牛客 HJ106 字符逆序 golang实现

牛客题目算法连接 题目 golang 实现 package mainimport ("fmt""bufio""os" )func main() {str, _ : bufio.NewReader(os.Stdin).ReadString(\n)if len(str) 0 {return } else {newstr:""strLen:len(str)-1for i:strLen;i>0;i-…

小红书达人类型特点有哪些,创作形式总结!

小红书自带的社交电商属性,吸引了众多优秀的内容创作者和品牌达人。他们以不同的风格和主题,赢得了粉丝们的喜爱和关注。今天为大家分享下小红书达人类型特点有哪些,创作形式总结! 1. 内容创作风格 我们从内容上来区分小红书达人类…

Android11编译第七弹:串口文件读写

问题:需要对SIM卡进行管理,支持APP切换SIM卡。此功能需要访问串口文件,并且对串口文件进行读写。APP操作串口文件/dev/ttyUSB1时,串口文件打开失败。 2023-11-23 10:59:44.092 14264-14264 MULTI_CARD_SerialHandle com.wellnkio…

2023.11.24制作一个常用的登录注册模板(包含密码验证、输出格式验证、验证码等功能)

2023.11.24制作一个常用的登录注册模板(包含密码验证、输出格式验证、验证码等功能) 1. 简介2. 功能3. 页面效果3.1 登录页面3.2 忘记密码页3.3 注册页面 1. 简介 比较喜欢简洁风,只是用bootstrap进行简单装饰 制作一个模板,日常…

2000-2022年上市公司全要素生产率LP方法(含原始数据+测算代码do文档+计算结果)

2000-2022年上市公司全要素生产率测算LP法(含原始数据测算代码do文档计算结果) 1、时间:2000-2022年 2、范围:上市公司 3、指标:证券代码、证券简称、统计截止日期、固定资产净额、year、股票简称、报表类型编码、折…

国自然基金项目的题目确定、立项依据、特色与创新、研究内容 目标等,基金撰写的隐藏技巧

目录 一 基金项目申请要求、重点及项目介绍 二 基金的撰写技巧 三 基金撰写的隐藏技巧 四 范例分析及提交前的自我审查 更多应用 基金项目申请需要进行跨学科的技术融合,申请人需要与不同领域结合,形成多学科交叉的研究。基金项目申请在新时期更加注…

函数计算的新征程:使用 Laf 构建 AI 知识库

Laf 已成功上架 Sealos 模板市场,可通过 Laf 应用模板来一键部署! 这意味着 Laf 在私有化部署上的扩展性得到了极大的提升。 Sealos 作为一个功能强大的云操作系统,能够秒级创建多种高可用数据库,如 MySQL、PostgreSQL、MongoDB …

今日祝福语道一声早安,惟愿你时时安好,天天幸福!

1、托太阳公公轻轻的叩醒你沉睡的心灵,将暖暖的阳光洒满你全身,愿你精神抖擞信心百倍的迎接新的一天,朋友,早安! 2、一天中,第一个叫醒你的是闹钟,第一眼看到的是阳光,第一件要做的事…

竹云参编《公共数据授权运营平台技术要求》团体标准正式发布

2023年11月23日,第二届全球数字贸易博览会“数据要素治理与市场化论坛”于杭州成功召开,国家数据局党组书记、局长刘烈宏,浙江省委常委、常务副省长徐文光出席会议并致辞。会上,国家工业信息安全发展研究中心发布并解读了我国首部…

走近科学之《MySQL 的秘密》

走近科学之《MySQL 的秘密》 mysql 存储引擎、索引、执行计划、事务、锁、分库分表、优化 1、存储引擎(storage engines) 存储引擎规定了数据存储时的不同底层实现,如存储机制、索引、锁、事务等。 可以通过 show engines 命令查看当前服务…

RabbitMQ基础教程

1.什么是消息队列 消息队列(Message Queue),我们一般简称为MQ。消息队列中间件是分布式系统中重要的组件,具有异步性、松耦合、分布式、可靠性等特点。用于实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺少…

利用企业被执行人信息查询API保障商业交易安全

前言 在当今竞争激烈的商业环境中,企业为了保障商业交易的安全性不断寻求新的手段。随着技术的发展,利用企业被执行人信息查询API已经成为了一种强有力的工具,能够帮助企业在商业交易中降低风险,提高合作的信任度。 企业被执行人…

性能优化中使用Profiler进行页面卡顿的排查及解决方式

文章目录 一、前言二、页面卡顿的排查方式1、耗时操作的监控2、页面卡顿的监控 三、参考链接 一、前言 程序的优化在做过线上bug处理,布局层级优化,项目依赖库版本更新,重复库合并,删除未使用的资源,删除冗余的库&…

Android开发从0开始(Activity篇)

Activity的生命周期 对应解释: startActivity(new Intent(源页面.this,目标页面.class)) 结束当前活动页面finish(); Activity的启动模式 App先后打开两个活动,此时活动会放入栈内。 (Android:launchMode”standard”)默认 &am…

idea git将某个分支内的commit合并到其他分支

idea git将某个分支内的commit合并到其他分支 1.打开旧分支的代码提交记录 在IDEA中切换到新分支的代码,点击Git打开代码管理面板,在顶部点击Log:标签页(这个标签页内将来可以选择不同分支的个人/所有人的代码commit记录)&#x…

自监督LIGHTLY SSL教程

Lightly SSL 是一个用于自监督学习的计算机视觉框架。 github链接:GitHub - lightly-ai/lightly: A python library for self-supervised learning on images. Documentation:Documentation — lightly 1.4.20 documentation 以下内容主要来自Documen…

平台工程时代的 Kubernetes 揭秘:2023年生产状况报告深度剖析

Kubernetes 在生产环境中的复杂性已经成为常态,在2023年这个平台工程盛行的时代,容器管理的最大亮点可能在于其灵活性,然而在运维政策和治理等方面仍然存在诸多挑战。八年过去了,在生产环境中使用 Kubernetes 仍然需要面临许多挑战…

Java 项目中常用注解汇总!! (自整理)

Spring框架的注解 PostMapping("/getDetails") post请求 映射到接口 RequestBody 用来接收HTTP请求体中参数 GetMapping("/getDetails") get请求 映射到接口 RequestParam 用来接收URL中的查询参数 PutMappi…