首页 > 其他分享 >秒懂-----冒泡排序

秒懂-----冒泡排序

时间:2024-11-14 22:45:15浏览次数:3  
标签:泡泡 temp 代码 冒泡排序 ----- 冒泡 比较

排序方法是一种重要的,基本的算法。

我相信很多人学习的第一个排序算法就是冒泡排序。可是有很多人(包括作者本人)在开始学冒泡排序时,总是会有这种感觉------明明一听就懂,为何就是写不出代码!!归根结底时没有去深入它。

何为冒泡

生活中的冒泡

请大家想象一口大锅,里面装满了水,现在我来给它加热;我们会看到锅底开始冒出小泡泡,随后小泡泡变大,向上升;锅底又冒出一个小泡泡,又变大,同时最初的那个小泡泡会更大;循环往复,我们就得到了一串从下往上依次变大的泡泡。


程序冒泡图文解

我们先来看一组由大小不同的数字组成的无序数列。

9 8 10 34 5 7;

从第一个数字开始,每相邻的两个数相比较,若前一个数比后一个数大,则把比较大的数放在与它比较的小数的位置上,然后再让这个较大的数与下一个相邻的数相比较。

我们先来比较一趟,如下图



聪明如你,肯定已经发现,我们比了5次,而且可以看到第一趟,最大的泡泡跑到了最下面(最大的数)。

那么第二趟呢,由于最大的已经在最后了,我们只需要比较前面5个数即可;不妨单拿出来8 9 10 5 7 ,重复上面的操作,如下图



第三趟,第四趟,到第五趟,第五趟后,只剩下一个最小的泡泡(最小的数),就不用再进行比较了。

每一趟的最后,最大的数都会跑到最下面去。

整个过程的图如下



C语言代码

#include<stdio.h>
#define N 5
//宏定义这里使用宏定义的方式将N定义为常量 4,在后续代码中凡是出现N的地方,
//都会被预处理器替换为 4。其好处在于方便代码的维护和修改,
//如果后续需要改变数组的大小,只需要修改这一处宏定义的值即可,无需在代码中到处去修改涉及数组大小的数字。
int main()
{
	int a[N],i,j,temp;
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
	for(i=0;i<N;i++)//进行比较的趟数
	{
		for(j=0;j<N-1-i;j++)
		{
			//数字交换
			if(a[j]>a[j+1]){
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
		
	}
	//输出排好序的数组
	for(i=0;i<N;i++)
		printf("%d ",a[i]);
	return 0;
}

能看到这,说明你是个爱学习的人,如果我文章中有不旦之处,请私信作者,我会尽快改正,我会感谢您宝贵的意见。若这篇文章对您有些许的帮助,我会欣喜不已,也请您点赞收藏,让更多人看到这篇文章。

标签:泡泡,temp,代码,冒泡排序,-----,冒泡,比较
From: https://blog.csdn.net/ice_typ2024/article/details/143780996

相关文章

  • 电子应用产品设计方案-7:全自动智能空调系统设计方案
    一、系统概述本全自动智能空调系统旨在为用户提供舒适、节能且便捷的室内环境调节解决方案。通过融合传感器技术、智能控制算法和通信技术,实现对室内温度、湿度、空气质量等参数的精确监测和自动调控。二、系统组成1.传感器模块   -温度传感器:采用高精度数字式温......
  • shell编程 - 基础篇
    1.Shell简介 Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。2.Shell编程语言必知必会shell命令解释器:bash编程常用命令解释器.命令解释器bash目前应用最广......
  • 探索Google Earth Engine:利用MODIS数据和R语言进行2000-2021年遥感生态指数(RSEI)的时空
    前段时间,小编学习了在GEE上进行遥感生态指数(RSEI)的评估,非常头疼,但是实验了两周后,亲测有效,主要采用的是MODIS数据分析了2000-2021年中国内蒙古某地的RSEI时间序列分布状况,现在把学习的代码分享给大家。1GEE计算RSEI1.1研究区域导入与初步定义varsa=ee.FeatureCollection(......
  • C语言:数组(一维数组,二维数组,数组越界,数组作为函数参量,冒泡排序)
    1、一维数组的创建和初始化1.1、数组的创建数组是相同类型元素的集合•数组中可以存放1个或者多个数据•数组中存放的数据,类型是相同的数组的创建方式:元素类型自定义数组名(常量表达式)比如:intarr[10]doublearr[5]chararr[8+5]错误写法:intarr[n];......
  • 【大数据学习 | HBASE高级】hbase-phoenix 与二次索引应用
    1. hbase-phoenix的应用1.1概述:上面我们学会了hbase的操作和原理,以及外部集成的mr的计算方式,但是我们在使用hbase的时候,有的时候我们要直接操作hbase做部分数据的查询和插入,这种原生的方式操作在工作过程中还是比较常见的,以上这些方式需要使用外部的框架进行协助处理,其实hb......
  • oracle RMAN Duplicate failing with RMAN-06136, ORA-01503, ORA-00349
     在数据迁移的时候遇到报错RMAN-00571:===========================================================RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============RMAN-00571:===========================================================RMAN-03002:failur......
  • 教资 - 综合(12)_单选题
    1、(建构主义)环境是一种以技术为支持的学习环境,学生从中可以展开有意义的学习活动。在学习过程中,技术作为学生探索、实验和反思学习的工具,以使学生从经验中学习。2、认为“教育是塑造人的行为”,强调“强化”在心理发展中作用的是(斯金纳)3、(个别化教学模式)是在程序教学发展的基础上......
  • 题解:P7836 「Wdoi-3」夜雀 collecting
    题解摘自做题记录。分析数据范围明显得要让我们分开搞。【Sub2】应该是暴力。这里有个主体思路,我们完全可以贪心地将当前背包里的食材删掉,直到每种出现过的食材数量刚好为\(1\)。因为我们保留更多的是没有用的。那么我们就可以用二进制数表示\(x\)种食材的出现状态了。同......
  • 电子应用产品设计方案-5:多功能恒温控制器设计
    一、设计原理恒温控制在许多领域都有重要应用,如工业生产、医疗设备、科研实验和日常生活等。本设计旨在提供一种多功能的恒温控制器,能够满足不同场景下对温度精确控制的需求。二、设计目标1.能够精确控制温度在设定值的±0.5°C范围内。2.支持多种温度传感器,如热电偶......
  • CPU性能分析方法论 TMA(Top-down Microarchitecture Analysis)
    frompixiv前置知识指令流水线与分支预测指令流水线(英语:Instructionpipeline)是为了让计算机和其它数字电子设备能够加速指令的通过速度(单位时间内被执行的指令数量)而设计的技术。流水线在处理器的内部被组织成层级,各个层级的流水线能半独立地单独运作。每一个层级都被管理......