c语言排序之冒泡排序升序的使用详解

2023-11-08

在c语言中实现冒泡排序:

简介:“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。冒泡排序应该是最常见的排序方法了,c语言初学者一定要学会使用。

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。

核心思想:两两相邻元素进行比较。冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。

具体排序如下:

算法总结及实现:
对于具有N个元素的数组R[n],进行最多N-1轮比较;
了解了冒泡排序的基本概念和思想以后,我们又如何将上述思想转换成具体的代码呢?
首先
 我们随机给出一组数据:
int arr[9] = {1,43,8,71,32,90,45,12,41};

我们的任务就是将上述9个数字排列成我们想要的升序

这组数据升序就一定避免不了要进行交换,每次两两比较以后都会进行一次交换

如何实现交换呢?其实很简单先贴代码:

if (arr[j + 1] < arr[j])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}

两个数把他想象成一瓶是酱油一瓶是醋,你手上一瓶酱油一瓶醋如何让他们交换瓶子呢?我们只要在拿出一个空瓶子就能很好的解决这个问题,把酱油放入空瓶然后将醋倒入酱油瓶,最后将酱油瓶倒入空瓶就完成了。上述代码便是依靠这样得原理实现的。

其次:

解决完交换的问题以后我们就应该要思考如何让代码跑起来让每次比较都能够进行连续的升序

前面讲过,对于具有N个元素的数组R[n],进行最多N-1轮比较;在第一次for循环中我们给出的9组数据一共要进行八次比较,第二次循环中,我们每进行一次比较后就有一个数据已经完成了,故第一次循环中进行比较的数字在后续中就可以不再进行比较(因为它已经和每个数字都比过了)。

int main() {
	int arr[9] = {1,43,8,71,32,90,45,12,41};
	int i = 0;
	int tmp = 0;
	int j = 0;
	for(i = 0; i < 8; i++)//9组数据每次两两比较一共要进行8次
	{
		for(j= 0;j<8-i;j++)//每次比较完后,下一组的比较都比上一次比较要少一次(8-i)
		{

			if (arr[j + 1] < arr[j])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}

		}
		
	}

最后: 

如果你还想打印出来看看实际的升序结果可以加入以下代码:

for (int z = 0; z < 9; z++)
	{
		printf("%d\n",arr[z]);
	}

打印出来的结果如下:

一个简单的冒泡排序就写完了,如果大家还有不懂得话,可以留言一起讨论以下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言排序之冒泡排序升序的使用详解 的相关文章

随机推荐

  • 小程序开发:Component “pages/index/index“ does not have a method “onGetOpenid(p)“ to handle event “tap“

    小程序的坑又来啦 当我们在js里面很快乐的写了一个带参数的方法 然后在页面上使用bindtap去调用时 就像我这样 不要吐槽 我是测试代码 然后就会愉快的发现 嗯 怎么解决呢 去掉括号和参数 加一个date 问号1代表你接受参数的名称 问号
  • 读spring in action spring 之旅

    spring bean 的作用域 Spring定义了多种作用域 可以基于这些作用域创建bean 包括 单例 Singleton 在整个应用中 只创建bean的一个实例 原型 Prototype 每次注入或者通过Spring应用上下文获取的时
  • 【CV夏令营】学习笔记01:跑通机器学习版本baseline

    0 学习背景 有幸参与了DataWhale的AI视觉夏令营 沉浸式全流程体验AI比赛 比赛题目是 脑PET图像分析和疾病预测挑战赛 这里给出链接 https challenge xfyun cn topic info type pet 20
  • 快速找到某台电脑上tomcat的安装路径

    所有程序 gt Apache Tomcat 7 0 Tomcat7 gt Tomcat 7 0 Program Directory 即可 当然前提是他的是window安装版
  • 【人生第一份offer~】北京京东科技 日常实习一面二面(已OC) 21/12/22&23

    北京京东科技 日常实习一面 21 12 22 体验极佳的一次面试 面试官大大贼温柔 循循善诱地帮助我把问题捋出来 另外问题也都对我这个初学者很友好 超级简单哈哈哈 面试完半个小时二面电话就来了 约到了明天上午十一点 聊项目 说下你在这个大型
  • tinymce变化后onchange光标变化问题(React)

    关于tinymce富文内容变化后 光标会自动跳到最前面的问题 比如回车 复制粘贴 都会跳到最前面 由于我是ant design pro包了一层 它给分配的value和onchange 不用的话 确实也不会有这问题 但那样form提交表单时
  • Git配置credential helper,并使用Http/Https传输

    现实场景 在使用Git进行开发的时候 我们可以使用ssh url或者http url来进行源码的clone push pull 二者的区别是 使用ssh url需要在本地配置ssh key 这也就意味着你必须是开发者或者有一定的权限 每次的
  • 这些错误你都犯过吗?来看看9大XMind初学者常见错误!

    当我们在思考一个事件时 我们往往会将自己的想法通过思维导图的方式展现出来 XMind就是一款强大的思维导图和头脑风暴工具 数十年来一直是百万用户的首选 gt gt 点击下载Mind ZEN试用版 lt lt 对于初学者来说 常常会犯一些固有
  • TypeC规范--CC连接

    上次在TypeC与PD快充文章内我们在后面放了几张图 如下图 上图位于TypeC规范章节4 5 1 3 3 我们以这个图为例介绍一下 我们可以看到在VBus上会有MOS去切换source和sink的通路 这个是DRP在VBUS上的特点 我们
  • Entity Framework Core系列教程-26-数据迁移

    Entity Framework Core数据迁移 迁移是一种通过保留数据来使数据库架构与EF Core模型保持同步的方法 如上图所示 EF Core API从域 实体 类构建EF Core模型 并且EF Core迁移将基于EF Core模
  • Ubuntu获取串口权限使用CAN分析仪

    Ubuntu获取串口权限使用CAN分析仪 通过以下命令获取usb设备信息 lsusb 可以得到以下信息 Bus 002 Device 001 ID 1d6b 0003 Linux Foundation 3 0 root hub Bus 00
  • Linux Maven-v3.8.6的安装与配置

    Maven v3 8 6的安装与配置 官网下载页地址 maven依赖jdk环境 且需要 jdk1 7 以上版本 安装之前需要先配置好 JAVA HOME 的环境变量 有需要可以看之前的 JDK 11的安装与环境变量配置 1 下载 解压 wg
  • 2023华为OD机试真题【查找单入口空闲区域/回溯法】

    题目描述 给定一个 m xn 的矩阵 由若干字符 和0构成 X表示该处已被占据 0 表示该处空闲 请找到最大的单入口空闲区域 解释 空闲区域是由连通的O组成的区域 位于边界的0可以构成入口 单入口空闲区域即有目只有一个位于边界的0作为入口的
  • 教你从零开始搭建私有网盘及个人博客(云服务器基础使用教程)

    云服务器选择 首先 你必须购买一个的服务器 不过你可以到阿里云的 高校学生 在家实践 计划 http suo im 5sMWSq 中免费领取6个月的云服务器先试试手 选配服务器和选配个人电脑差不多 所以配置方面不多提 我们直接看到 镜像 选
  • Threejs加载OBJ模型

    threejs加载OBJ模型代码
  • 2014年6月23日-6月29日(共11小时,剩4424小时)

    6月23日 上午有事 下午1小时 剩4438小时 6月24日 3小时 剩4435小时 6月25日 5小时 剩4430小时 6月26日 1小时 剩4429小时 6月27日 3小时 剩4426小时 6月29日 2小时 剩4424小时
  • 论文笔记:When Do Contrastive Learning Signals Help Spatio-TemporalGraph Forecasting?

    2022 SigSpatial 1 intro 1 1 背景 论文认为数据稀缺是阻碍时空图 STG 预测的一个关键问题 在这一领域的公共数据集通常只包含几个月的数据 限制了可以构建的训练实例数量 gt 学习模型可能会对训练数据过拟合 导致泛
  • Redis的这些都没有掌握,你还想要拿Offer?

    Redis 简介 Redis 是完全开源免费的 遵守 BSD 协议 是一个高性能的 key value 数据库 Redis 与 其他 key value 缓存产品有以下三个特点 Redis 支持数据持久化 可以将内存中的数据保存在磁盘中 重
  • 反爬虫策略的应对方法汇总

    现在越来越多的工作需要用到爬虫程序 但是同时也有很多人会通过爬虫程序恶意竞争 因此为了能够保护自己的正当权益 各种反爬虫程序被研发利用起来 所以很多时候 在进行爬虫工作的时候首要面对的就是爬虫和反爬虫的拉锯战 这里就说一下常见的防爬虫策略和
  • c语言排序之冒泡排序升序的使用详解

    在c语言中实现冒泡排序 简介 冒泡 这个名字的由来是因为越大的元素会经由交换慢慢 浮 到数列的顶端 故名 冒泡排序应该是最常见的排序方法了 c语言初学者一定要学会使用 冒泡排序 BubbleSort 的基本概念是 依次比较相邻的两个数 将小