冒泡排序 bubble sort

简介: 冒泡排序冒泡排序(英语:Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

冒泡排序

冒泡排序(英语:Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序对 {\displaystyle n} n个项目需要O( {\displaystyle n^{2}} n^{2})的比较次数,且可以原地排序。尽管这个算法是最简单了解和实现的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的。
冒泡排序是与插入排序拥有相等的运行时间,但是两种算法在需要的交换次数却很大地不同。在最好的情况,冒泡排序需要 {\displaystyle O(n^{2})} O(n^{2})次交换,而插入排序只要最多 {\displaystyle O(n)} O(n)交换。冒泡排序的实现(类似下面)通常会对已经排序好的数列拙劣地运行( {\displaystyle O(n^{2})} O(n^{2})),而插入排序在这个例子只需要 {\displaystyle O(n)} O(n)个运算。因此很多现代的算法教科书避免使用冒泡排序,而用插入排序取代之。冒泡排序如果能在内部循环第一次运行时,使用一个旗标来表示有无需要交换的可能,也可以把最好的复杂度降低到 {\displaystyle O(n)} O(n)。在这个情况,已经排序好的数列就无交换的需要。若在每次走访数列时,把走访顺序反过来,也可以稍微地改进效率。有时候称为鸡尾酒排序,因为算法会从数列的一端到另一端之间穿梭往返。
冒泡排序算法的运作如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

相关文章
|
Ubuntu
Ubuntu安装aptitude
Ubuntu安装aptitude
361 0
|
存储 XML Java
Activiti7(图文并茂)
Activiti7(图文并茂)
|
Java 关系型数据库 MySQL
GraalVM 静态编译下 OTel Java Agent 的自动增强方案与实现
在 2024 OpenTelemetry Community Day 会议中,阿里云可观测工程师张乎兴(望陶)和饶子昊(铖朴)为大家带来了《GraalVM 静态编译下 OTel Java Agent 的自动增强方案与实现》的演讲分享,介绍阿里云在相关领域的探索方案,本文是相关分享对应的中文整理。
572 108
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第13天】本文将深入浅出地介绍卷积神经网络(CNN)的基本原理,并探讨其在图像识别领域的应用。通过实例演示如何利用Python和TensorFlow框架实现一个简单的CNN模型,我们将一步步从理论到实践,揭示CNN如何改变现代图像处理技术的面貌。无论你是深度学习新手还是希望深化理解,这篇文章都将为你提供价值。
|
人工智能 数据安全/隐私保护 计算机视觉
旷视开源的AI人像视频生成太炸了!输入照片即可模仿任意表情包
【7月更文挑战第6天】旷视科技开源AI模型MegActor,以照片生成逼真人像视频,模仿表情包。基于条件扩散模型,解决身份泄露和背景干扰问题,使用合成数据、图像分割、CLIP编码及风格迁移技术。虽有视频质量、隐私风险及计算资源限制,但对动画和虚拟偶像行业带来革新。[链接](https://arxiv.org/abs/2405.20851)
383 3
|
存储 机器学习/深度学习 计算机视觉
【YOLOv8改进-卷积Conv】 OREPA(Online Convolutional Re-parameterization):在线卷积重参数化
**OREPA**是在线卷积重参数化的缩写,它提出了一种两阶段流程来减少深度模型训练的开销。该方法通过线性缩放层优化复杂训练块,并在训练完成后将其压缩为单个卷积层,降低内存使用和提高训练速度。与现有技术相比,OREPA能减少约70%的训练内存开销,提升2倍训练速度,并在ImageNet上提高最多0.6%的准确性。此外,它还在目标检测和语义分割任务中表现出色。论文和代码可在提供的链接中找到。
|
tengine 运维 Kubernetes
阿里巴巴重磅开源云原生网关: Higress
11月5日,2022 杭州 · 云栖大会-云原生峰会现场,阿里巴巴研究员、阿里云智能云原生应用平台总经理丁宇宣布:云原生网关 Higress 正式开源,Higress 是一款标准化、高集成、易扩展、热更新的云原生网关。
978 93
阿里巴巴重磅开源云原生网关: Higress
|
中间件 Linux API
容器改造传统应用的流程
【5月更文挑战第1天】如何评估和执行将传统应用进行Docker化改造的过程。
|
存储 大数据 调度
亚信AISWare DataOS大数据中台套件介绍02——开发程序及调度上下线
DataOS是一款汇总大部分大数据套件的企业型中台,可以满足企业大部分对大数据存储、计算、稽核的需求。但是平台使用体检并不好,所以有条件还是推荐使用阿里云的大数据组件
842 1
|
运维 安全 机器人