Python 实现 冒泡排序算法示例

冒泡排序算法示例

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的列表,比较相邻的元素,并交换它们的位置,如果它们的顺序错误。这个过程会重复进行,直到没有需要交换的元素为止,这时列表就已经排序完成。

Python 实现
def bubble_sort(arr):n = len(arr)for i in range(n):# 标志位,用于检测是否发生了交换swapped = Falsefor j in range(0, n-i-1):if arr[j] > arr[j+1]:# 交换元素arr[j], arr[j+1] = arr[j+1], arr[j]swapped = True# 如果没有发生交换,说明列表已经有序,提前退出if not swapped:breakreturn arr# 示例使用
arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("排序后的数组:", sorted_arr)
输出结果
排序后的数组: [11, 12, 22, 25, 34, 64, 90]

冒泡排序的步骤

  1. 比较相邻元素:从列表的第一个元素开始,比较相邻的两个元素。
  2. 交换位置:如果前一个元素比后一个元素大,则交换它们的位置。
  3. 重复遍历:重复上述步骤,直到没有需要交换的元素为止。
  4. 优化:通过设置标志位,可以在列表已经有序的情况下提前退出,减少不必要的比较。

时间复杂度

  • 最坏情况:O(n²) —— 当列表是逆序的时候。
  • 最好情况:O(n) —— 当列表已经有序的时候。
  • 平均情况:O(n²)

空间复杂度

  • O(1) —— 冒泡排序是一种原地排序算法,不需要额外的存储空间。

优缺点

优点

  • 实现简单,易于理解。
  • 对于小规模数据排序效果较好。

缺点

  • 对于大规模数据排序效率较低。
  • 时间复杂度较高,不适合处理大数据集。

冒泡排序虽然简单,但在实际应用中由于其较高的时间复杂度,通常不用于处理大规模数据。

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

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

相关文章

275-增强型多功能数据采集卡PCIe-6251-EX

产品特点: 高速高精度数据采集,16bit10MSPS,32路单端/16路差分高速高精度任意波形发生,14bit165MHz,2路完全独立完全可编程的I/O端口,33个完全可编程的量程选择,0~5V/0~10V/5V/10VPCIe通信接口…

Llama 3 后训练(三)

目录 4. 后训练 4.1 建模 图表解读 4.1.1 聊天对话格式 4.1.2 奖励建模 4.1.3 监督微调(Supervised Finetuning) 4.1.4 直接偏好优化(Direct Preference Optimization) 4.1.5 模型平均(Model Averaging&#x…

机器人C++开源库The Robotics Library (RL)使用手册(四)

建立自己的机器人3D模型和运动学模型 这里以国产机器人天机TR8为例,使用最普遍的DH运动学模型,结合RL所需的描述文件,进行生成。 最终,需要的有两个文件,一个是.wrl三维模型描述文件;一个是.xml运动学模型描述文件。 1、通过STEP/STP三维文件生成wrl三维文件 机器人的…

聚类的主要算法和介绍

聚类是一种无监督学习算法,用于将数据集划分为多个组(或簇),使得同一簇内的数据点更相似,不同簇之间的点差异更大。以下是主要的聚类算法及其特点、应用场景和局限性: 1. K-Means 聚类 特点: …

uniapp3 手写签名组件(vue3 语法)封装与应用

本文介绍了基于 uniapp3(vue3 语法)封装的手写签名组件。 包括父组件的调用方式,如通过条件判断展示签名图片或点击进入签名页面,以及接收签名照片的逻辑。子组件涵盖了自定义导航栏、清除、取消、确认等操作按钮,利用…

Go+chromedp实现Web UI自动化测试

1.为什么使用go进行UI自动化测试? 速度:Go速度很快,这在运行包含数百个UI测试的测试套件时是一个巨大的优势 并发性:可以利用Go的内置并发性(goroutines)来并行化测试执行 简单:Go的简约语法允许您编写可读且可维护…

【LLM综述】29种大模型Prompt Engineering技术

note 从零样本(Zero-shot)提示到最新进展的各种提示技术,包括推理和逻辑链(Chain-of-Thought, CoT)提示、自动链式思考(Auto-CoT)提示、自我一致性(Self-Consistency)提…

基于SpringBoot的实验室信息管理系统【源码+文档+部署讲解】

系统介绍 视频演示 基于SpringBootVue实现的实验室信息管理系统采用前后端分离的架构方式,系统分为管理员、老师、用户三种角色,实现了用户管理、设备管理、实验室查询、公告、课程、实验室耗材管理、我的等功能 技术选型 开发工具:idea2…

arcgis模版空库怎么用(一)

这里以某个项目的数据为例: 可以看到,属性表中全部只有列标题,无数据内容 可能有些人会认为空库是用来往里面加入信息的,其实不是,正确的用法如下: 一、下图是我演示用的数据,我们可以看到其中…

基于Spring Boot + Vue3实现的在线汽车保养维修预约管理系统源码+文档

前言 基于Spring Boot Vue3实现的在线汽车保养维修预约管理系统是一种前后端分离架构的应用,它结合了Java后端开发框架Spring Boot和现代JavaScript前端框架Vue.js 3.0的优势。这样的系统可以为汽车服务站提供一个高效的平台来管理客户的预约请求 技术选型 系统…

2024年总结

2024年是努力打破思维边界的一年,为了突破自己,努力阅读更多的书籍,变换更多的角度思考问题; 努力的写博客,写文字,总结自己的思想; 不断的实践,克制自己的思维和行动的惯性&#…

论文研读:Text2Video-Zero 无需微调,仅改动<文生图模型>推理函数实现文生视频(Arxiv 2023-03-23)

论文名:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators 1. 摘要 1.1 方法总结 通过潜空间插值, 实现动作连续帧。 以第一帧为锚定,替换原模型的self-attention,改为cross-attention 实现 保证图片整体场…

python 归并排序(Merge Sort)

归并排序(Merge Sort) 归并排序是一种高效的排序算法,采用分治法(Divide and Conquer)策略。它的基本思想是:将数组递归地分成两半,分别对两半进行排序,然后将排序后的两半合并成一…

AI安全的挑战:如何让人工智能变得更加可信

引言 随着人工智能(AI)技术在各个领域的广泛应用,尤其是在医疗、金融、自动驾驶和智能制造等行业,AI正在重塑我们的工作和生活方式。从提高生产效率到实现个性化服务,AI带来了前所未有的便利。然而,在享受这…

去除el-tabs 下面的灰色横线,并修改每一项的左右间距,和字体颜色

HTML <el-tabs v-model"activeName" class"demo-tabs" tab-click"handleClick"><el-tab-pane label"全部" :name"null"></el-tab-pane><el-tab-pane label"问答陪练" name"general-t…

C++算法20例

1、求两个数的最大公约数 int gcd(int a, int b) { 2 return b 0 ? a : gcd(b, a % b); 3} 2、判断素数 bool isPrime(int n) {if (n < 1) return false; for (int i 2; i * i < n; i) {if (n % i 0) return false;}return true; } 3、冒泡排序 void bubbleSort…

截图技术方案

安卓截屏技术附带悬浮窗自动存储功能_安卓截图浮窗-CSDN博客 https://chat.baidu.com/search?dyTabStrMCwxMiwzLDEsMiwxMyw3LDYsNSw5&pdcsaitab&setypecsaitab&extParamsJson%7B%22apagelid%22%3A%2210990774271994514433%22%2C%22enter_type%22%3A%22a_ai_index%…

气象数据Grib及Python绘图

文章较长&#xff0c;却将所有常见的气象数据类型进行了详细的介绍&#xff0c;对各种方法的优劣势进行了详细分析&#xff0c;相信对于阅读者来说会有一定程度的帮助 目录 GRIB 数据格式简介 使用Python处理Grib文件 法1&#xff1a;使用pygrib库 法2&#xff1a;使用cf…

sqlite3 python如何查表结构

在SQLite3中&#xff0c;通过Python的sqlite3模块可以方便地查询表结构。以下是几种常用的方法来获取表结构信息&#xff0c;包括列名、数据类型和其他属性。 使用 PRAGMA table_info 最直接的方法是使用 PRAGMA table_info 命令。这个命令会返回指定表中每一列的信息&#x…

Selenium和WebDriver的安装与配置

1、Selenium的安装 直接黑窗口执行&#xff1a;pip install selenium3.141.0 可能遇到的问题&#xff1a; 解决方法配置环境变量&#xff1a; 找到目录&#xff1a;&#xff08;以自己电脑为准&#xff09; C:\Users\Administrator\AppData\Local\Programs\Python\Python38-…