经典算法(二)---冒泡排序

排序算法之冒泡排序 排序算法之冒泡排序。本文章主要介绍冒泡排序的两种实现方式:1.从前往后冒泡 2.从后往前冒泡 阅读详情

一、冒泡排序

1. 冒泡排序的定义

来自百度百科冒泡法的定义:

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。


它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

实质:把小(大)的元素往前(后)调

2. 算法原理

冒泡排序算法的原理如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。 
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

算法思想:

从左到右不断交换相邻逆序的元素,在一轮的循环之后,可以让未排序的最大元素上浮到右侧。在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出。

动态图如下:

3. 算法分析

4. 参考代码:

#include <stdio.h>

#define ARR_LEN 255 /*数组长度上限*/
#define elemType int /*元素类型*/

/*冒泡排序*/
/*1.从当前元素起,向后依次比较每一对相邻元素,若逆序则交换*/
/*2.对所有元素均重复以上步骤,直至最后一个元素*/
/*elemType?arr[]: 排序目标数组;?int?len: 元素个数*/
void bubbleSort (elemType arr[], int len) {
	elemType temp;
	int i, j;
	for (i=0; i<len-1; i++) /*外循环为排序趟数,len个数进行len-1趟*/
		for (j=0; j<len-1-i; j++) { /*内循环为每趟比较的次数,第i趟比较len-1-i次*/
			if (arr[j] > arr[j+1]) { /*相邻元素比较,若逆序(升序为左大于右,降序反之) 则交换*/
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
}

int main (void) {
	elemType arr[ARR_LEN] = {3,5,1,-7,4,9,-6,8,10,4};
	int len = 10;
	int i;
	
	bubbleSort (arr, len);
	for (i=0; i<len; i++)
		printf ("%d\t", arr[i]);
	putchar ('\n');
	
	return 0;
}

一文学懂经典算法系列之:冒泡排序 本文关键字:经典算法、排序算法、交换排序、冒泡排序、算法实践。冒泡排序也称气泡排序,是经典的交换排序方法。整个过程就是在无序区中对相邻元素进行两两比较,将不满足相对顺序的一对儿元素进行交换,再进行下一对儿元素的比较。每一趟冒泡后,就会送一个最小的元素达到最上端。在无序区中重复这个过程,直到所有的元素有序。... 阅读详情

相关推荐

矩阵管理:一人100账号霸屏小红书,保姆级教程经验技巧

同时,如果你的账号表现很正常,很OK,它也增加账号权重。手机环境:一机一卡一号是基本操作,如果你觉得设备成本高,你就要知道WIN的云真机,一键新机,一键随机设备参数,一键还原,一键安装应用,自带批量发布笔记,私信聚合,自带回复私信,一键养号等等,一人批量注册100个小红书账号真的很简单!从流量逻辑来分析,大家有没有发现,从账号粉丝数来看,小红书很难出现类似抖音上超千万粉丝量级的账号,几十万粉丝的博主已经是头部账号了,原因在于,抖音的流量分发机制是80%的流量集中在 20% 的头部账号而。

FDF432DF的博客 5140

排序算法(二):冒泡排序

原创:https://blog.youkuaiyun.com/u012152619/article/details/47305859

水滴的博客 760

【白话系列】倍增算法

【序言】         我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌在看别人的算法解析时整版的i,j,k等我看到鼠标就惯性移到右上角的符号语言,所以我想用最形象的方式来纪念它。 【一】         从前,有一只可爱得不得了的小白兔,它想从

JarjingX 3万+

冒泡排序算法的原理与实现

冒泡算法,冒泡排序

SprintMan的博客 2660

Jenkins Job DSL:用代码管理CI/CD配置的实践指南

Jenkins 是持续集成(CI)领域的经典开源平台,其核心价值在于自动化构建与交付流程。然而传统 UI 配置方式导致配置不可版本化、难以复现、审计困难,严重制约团队规模化协作效率。Job DSL 作为一种声明式配置即代码(IaC)方案,通过 Groovy 脚本驱动 Jenkins 内部 API,实现 Job、View、Folder 等资源的程序化创建与维护,天然支持 Git 版本控制、权限审计与环境一致性保障。它不替代 Pipeline,而是与其协同构成‘流程定义’与‘基础设施定义’双轨体系,显著提升 C

weixin_33744141的博客 517

制作INCA和CANape通用的A2L

CANape和INCA通用的A2L配置与修改

赞的博客 5960

【综合类型第 22 篇】什么是冒泡排序 ?

一:什么是冒泡排序 ? 二:冒泡排序的优化 三:多种编程语言实现冒泡排序,包含 Java,JavaScript,Python,PHP,GO,C++

“Allen Su”的博客 1072

小论文/大论文必备 | YOLO多模态目标检测、绘制曲线对比图 | 引入多种绘制曲线对比图,包括mAP0.5,mAP0.5:0.95,Loss损失变化的曲线对比

本文通过可视化方法分析YOLO多模态模型的训练过程,对比不同实验的检测精度和损失函数变化。主要内容包括:1)绘制mAP@0.5和mAP@0.5:0.95曲线评估检测精度;2)分析边界框回归损失(box_loss)、分类损失(cls_loss)和分布式损失(dfl_loss)的收敛趋势;3)提供完整的Python代码实现,支持多实验对比,可生成高清曲线图。该方法能直观展示模型训练效果,便于优化策略评估和参数调优。

Ai缝合怪、助力小伙伴高效发论文 260

排序算法:冒泡排序

冒泡排序是一种交换排序。 什么是交换排序呢? 交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 算法思想 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。 假...

HelloWorld搬运工 5416

【AI面试】 Python 的装饰器

Python装饰器是一种高阶函数,用于在不修改原函数代码的情况下增强其功能。它通过@语法糖接收目标函数作为参数,并返回一个包含额外逻辑(如日志、缓存、权限验证等)的新函数。装饰器的核心价值在于代码复用和解耦,符合开闭原则,典型应用包括性能分析、权限控制等场景。例如,@timer_decorator可自动为函数添加耗时统计功能。本质上,@decorator等价于func = decorator(func),实际调用的是装饰器返回的包装函数。进阶技巧包括使用@functools.wraps保留原函数元信息。装饰

钱多多先森 183

液态神经网络(LNN):打破AI“静态快照”的连续动力学革命---AI大模型系统从零开始0029

MIT研究团队受秀丽隐杆线虫神经系统的启发,开发出革命性的液态神经网络(LNN)。该技术通过连续微分方程建模神经元动态,实现输入响应速度的自适应调节,解决了传统AI模型静态化、高能耗和低解释性的痛点。LNN具有三大突破性优势:仅需少量神经元(如20个)即可完成复杂任务;能处理非均匀时序数据;在自动驾驶、医疗监测等领域展现出卓越的适应性和鲁棒性。这项将生物智能与数学建模完美融合的技术,有望成为下一代AI的核心架构,目前已在无人机导航等场景验证了其高效性,被预测为2026年最具潜力的AI突破方向。

添柴程序猿的专栏 370

杭电Problem Set2018、2020

2018母牛的故事 法一 这个办法是参考别人的 int main() { int n; while (cin >> n) { if(n > 0 && n < 55) { int a, b, c, d;//年龄分别为1,2,3,4岁及以上的牛的数量 if (n <= 4)cout << n << e...

weixin_42991103的博客 195

深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天

文章目录前期工作设置GPU导入数据标准化可视化构建CNN网络编译训练模型预测模型评估 前期工作 设置GPU 如果使用的是CPU可以忽略这步 import tensorflow as tf gpus = tf.config.list_physical_devices("GPU") if gpus: gpu0 = gpus[0] #如果有多个GPU,仅使用第0个GPU tf.config.experimental.set_memory_growth(gpu0, True) #设置GPU显存用量

“365天深度学习训练营”报名进行中~ 7853

简单递归算法

C 语言递归教程

qq_31057589的博客 585

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

DAY17 打卡

解释:贪心算法,先把整个的牛棚从最小到最大都覆盖,然后减去其中最大的m-1个空隙,剩下的就是最短木板长度。解释:先把重复的删除,在进行冒泡排序。解释:根据已知进行简单的逻辑代码。

2301_79678638的博客 537

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

经典算法(1):冒泡排序及其优化

冒泡排序算法固然简单,但是在各大竞赛以及大公司的面试里常会考到冒泡排序的优化。这篇博客对冒泡排序进行了两次比较彻底的优化,并有完整的代码实现。

扬帆向海的博客 4万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

经典算法冒泡排序之标志位优化版

🔥前言 今天总结一下优化版的经典算法——冒泡排序,不同于以往的是这里的冒泡排序增加了一个标志位。我们要理解该冒泡排序的概念,算法流程与算法思想,探讨时间复杂度。这也是本专栏第六篇博文,感兴趣的朋友可以订阅以便持续观看。...

叶落秋白的博客 1842

经典算法冒泡排序

经典算法:冒泡排序 冒牌排序概念 自行百度这里不过多赘述。 问题引入 有这样一个数组,请用冒泡排序。int[] arr={5,2,4,9,6,7} 批话不多说直接上代码。 //int[] arr={2,5,7,9,6,7} int L=arr.length;//把数组长度定义为L for(int i=0;i<L-1;i++){ //外层for循环,有几个数循环几次 for(int j=0;j<L-1-i;j++){//内层控制每个数比几次 if(arr

starjv的博客 194

经典算法之冒泡排序算法

经典算法 就算法而言,我们主要学习的是数学+思维+逻辑+数据结构实现功能,所以我们主要学习是思维也是解决问题的思路,然后用逻辑去实现它 文章目录经典算法一、什么是冒泡排序?二、代码实现总结 提示:这可是面试当中笔试或机试最常见的算法,敲黑板划重点!!!! 一、什么是冒泡排序? 冒泡排序的原理就是,相邻的元素之间进行两两比较,如果前者大于后者,则交换位置,否则不变 ,每一趟依次向后进行第 1 步,直到最后一个元素。 二、代码实现 public class 冒泡排序 { public static

zhx__的博客 1465

【经典算法】冒泡排序

Java实现经典算法之冒泡排序

yubao0723的专栏 5753

用AI重新定义经典算法——以冒泡排序为例

开发AI智能应用,就下载InsCode AI IDE,一键接入DeepSeek-R1满血版大模型! 标题:用AI重新定义经典算法——以冒泡排序为例 在计算机科学领域,经典的排序算法如冒泡排序、快速排序等一直是学习编程和算法设计的基础。然而,随着人工智能技术的飞速发展,传统算法的学习与应用方式正在被彻底颠覆。本文将以冒泡排序为例,结合最新的AI开发工具InsCode AI IDE以及其背后的强大AI...

EmeraldTiger56的博客 898

经典算法---冒泡排序

原文链接: 冒泡排序---经典排序算法 | 逍遥游 冒泡排序(BubbleSort)以其“在排序过程中相邻元素不断交换,一些元素慢慢被换到最后,看起来就像是元素在冒泡一样”而得名,是一种简单的基于关键词比较的排序算法。 算法原理 冒泡排序的原理(以递增序为例)是每次从头开始依次比较相邻的两个元素,如果后面一个元素比前一个要大,说明顺序不对,则将它们交换,本次循环完毕之后再次从...

Newnius's blog 162万+

用现代AI工具简化经典算法:轻松掌握冒泡排序

最新接入DeepSeek-V3模型,点击下载最新版本InsCode AI IDE 标题:用现代AI工具简化经典算法:轻松掌握冒泡排序 在编程的世界里,算法是构建高效软件的核心。其中,冒泡排序(Bubble Sort)作为最基础且易于理解的排序算法之一,一直是初学者入门的经典选择。然而,对于许多编程新手而言,理解和实现这一算法可能仍然充满挑战。幸运的是,随着人工智能技术的发展,如今我们有了像InsC...

inscode_075的博客 738

用现代技术解锁经典算法:轻松掌握冒泡排序的艺术

最新接入DeepSeek-V3模型,点击下载最新版本InsCode AI IDE 标题:用现代技术解锁经典算法:轻松掌握冒泡排序的艺术 在计算机科学的浩瀚星空中,冒泡排序无疑是最经典的算法之一。它不仅是一个入门级的学习工具,更是理解排序算法原理和优化思维的重要起点。然而,对于初学者来说,编写正确的冒泡排序代码可能会成为一个挑战。尤其是当面对复杂的逻辑、边界条件以及性能优化时,即使是经验丰富的开发者...

SapphireFox37的博客 881

从冒泡排序到智能编程:如何用现代工具重构经典算法

最新接入DeepSeek-V3模型,点击下载最新版本InsCode AI IDE 从冒泡排序到智能编程:如何用现代工具重构经典算法 在计算机科学的广阔天地中,经典的排序算法始终是学习编程的重要基石。其中,冒泡排序作为入门级的经典算法之一,以其简单易懂的逻辑和直观的操作步骤,成为无数程序员初学时的必修课。然而,随着技术的发展和需求的变化,传统的手动编码方式已经无法满足快速开发和高效迭代的需求。今天,...

EmeraldWolf23的博客 480

21天经典算法之冒泡排序

本专栏主要是算法训练,目的很简单。就是为了进厂 最近官方在组织 21 天挑战赛,趁此机会我也更新一下经典算法的文章 如果想一起“狂”或者交流,欢迎来私聊 还不快趁着这个机会来提升自己💪...

奔走的王木木Sir的博客 710
上一篇: 经典算法 (一)---选择排序法
下一篇: 经典算法(三)---插入排序
'撒野奔跑.
博客等级 码龄4年 185粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'撒野奔跑.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值