数据结构----交换排序(冒泡排序、快速排序,C语言)

【C语言】排序详解——冒泡排序 前言: 冒泡排序可以说是排序系列中最简单也最基础的一种排序的方式,尽管它十分的简单易懂,但依旧会有一些小问题是大家可能忽略的,因此我打算将不同排序分成单独的文章进行讲解,这样既不会显得臃肿,同时也可以讲得更加仔细,废话不多说,开干。 一.概念简述 从上图我们不难看出冒泡排序应该有两个循环:第一个循环是小循环,该循环的作用是——在某个数组内依次进行两个数的大小比较;第二个循环是大循环,改循环的作用是——决定小循环的次数 那么概括来说就是,在一定次数内,数组按照一定的大小顺序进行两两比较,满足顺 阅读详情

冒泡排序

时间复杂度为O(n2)

/*************冒泡排序*************/
void BubbleSort(int r[], int n)
{
	int i, j,flag,temp;
	for (i = n - 1; i >= 1; i--)
	{
		flag = 0;
		for (j = 1; j <= i; j++)
		{
			if (r[j - 1] > r[j])
			{
				temp = r[j];
				r[j] = r[j - 1];
				r[j - 1] = temp;
				flag = 1;
			}
		}
	}
	printf("冒泡排序后序列为:");
	for (int m = 0; m < n; m++)
		printf("%d ", r[m]);
}

快速排序

快速排序是对冒泡排序的一种改进

时间复杂度最坏情况下是O(n2),但一般情况下,快速排序的时间复杂度是O(nlog2n)

/***********快速排序***********/
void QuickSort(int r[],int low,int high)
{
	int i;
	if (low < high)
	{
		int pivotpos = Partition(r, low, high);
		QuickSort(r, low, pivotpos-1);
		QuickSort(r, pivotpos + 1, high);
	}
}
void Print(int r[])
{
	printf("\n快速排序后序列为:");
	for (int i = 0; i < count; i++)
		printf("%d ", r[i]);
}

//快速排序的划分操作版本
int Partition(int r[],int low,int high)
{
	int pivot = r[low];     //将当前表中第一个元素设为基准,对表进行划分
	while (low < high)
	{
		while (low < high && r[high] >= pivot)
			--high;	     
		r[low] = r[high];//将比基准小的元素移到左端
		while (low < high && r[low] <= pivot)
			++low;
		r[high] = r[low];   //将比基准大的元素移动到右端
	}
	r[low] = pivot;     //基准元素存放到最终位置
	return low;     //返回存放基准值的最终位置
}

完整版本代码

#include <stdio.h>
#define maxSize 100
int R[maxSize] = { 0 };
int count = 0;

void Indata()
{
	int i = 0;
	printf("请输入整数数据(按回车键结束输入):");
	while (1)
	{
		scanf_s("%d", &R[i]);
		i++;
		count++;
		char c = getchar();
		if ('\n' == c)
			break;
	}
}

/*************冒泡排序*************/
void BubbleSort(int r[], int n)
{
	int i, j,flag,temp;
	for (i = n - 1; i >= 1; i--)
	{
		flag = 0;
		for (j = 1; j <= i; j++)
		{
			if (r[j - 1] > r[j])
			{
				temp = r[j];
				r[j] = r[j - 1];
				r[j - 1] = temp;
				flag = 1;
			}
		}
	}
	printf("冒泡排序后序列为:");
	for (int m = 0; m < n; m++)
		printf("%d ", r[m]);
}

/***********快速排序***********/
void QuickSort(int r[],int low,int high)
{
	int i;
	if (low < high)
	{
		int pivotpos = Partition(r, low, high);
		QuickSort(r, low, pivotpos-1);
		QuickSort(r, pivotpos + 1, high);
	}
}
void Print(int r[])
{
	printf("\n快速排序后序列为:");
	for (int i = 0; i < count; i++)
		printf("%d ", r[i]);
}

//快速排序的划分操作版本
int Partition(int r[],int low,int high)
{
	int pivot = r[low];     //将当前表中第一个元素设为基准,对表进行划分
	while (low < high)
	{
		while (low < high && r[high] >= pivot)
			--high;	     
		r[low] = r[high];//将比基准小的元素移到左端
		while (low < high && r[low] <= pivot)
			++low;
		r[high] = r[low];   //将比基准大的元素移动到右端
	}
	r[low] = pivot;     //基准元素存放到最终位置
	return low;     //返回存放基准值的最终位置
}

void main()
{
	Indata();
	BubbleSort(R, count);
	QuickSort(R, 0, count-1);
	Print(R);
	system("pause");
}

结果图

冒泡排序C语言,是数据结构中常用的方法 冒泡排序C语言,运用“冒泡”的方法进行排序,是数据结构中常用的方法 立即下载

相关推荐

数据结构中冒泡排序的C语言实现

数据结构中冒泡排序的C语言实现,并通过数组进行排序。

交换排序算法之冒泡排序-C语言版(带图详细)

相信大家在学习数据结构算法的时候经常会遇到的问题就是,老师讲解完这个算法思想,自己也听懂了,但一到自己写代码就写不出来,或者是即便自己模模糊糊的照着网上的代码自己写出来了,但是过几天就又忘了,其实这就是我们没有深刻的理解的这个算法的思想。 接下来,我就结合图例给大家详细的讲解一下。

小陈没烦恼 6409

数据结构之冒泡排序

数据结构之冒泡排序

冒泡排序算法详解之C语言版

冒泡排序是一种常用的排序算法,属于稳定排序法,其时间复杂度为O(n^2)。 冒泡排序法的原理就是从前向后依次比较相邻两个元素的大小,大元素后沉,类似于水中的泡泡逐步上浮的过程,随着泡泡逐渐接近水面,水中压强逐渐减小,水泡体积逐渐增大,因此成为冒泡排序。

sunnyoldboy博客 5万+

ROS2中间件选型指南:FastDDS与CycloneDDS零拷贝机制对比与实战

在机器人开发中,通信中间件是连接分布式节点的核心纽带,其性能直接影响系统的实时性与可靠性。DDS作为ROS2默认的通信标准,通过发布订阅模型和QoS策略,为高频大带宽场景提供了灵活的数据分发能力。并行计算与高性能传输的需求,推动了零拷贝技术的演进——从传统序列化到共享内存乃至指针传递,旨在减少数据复制开销、降低延迟。在激光雷达点云、相机图像等场景下,中间件的选型尤为关键。FastDDS凭借与ROS2的深度集成和丰富文档成为入门首选,而CycloneDDS在低延迟和资源占用上表现更优,借助iceoryx实现了

weixin_28726391的博客 259

杂记 | 使用keycloak实现SSO单点登录(新手向,概念、原理、逻辑、详细步骤、难点解释)

使用keycloak实现SSO单点登录(概念、原理、逻辑、详细步骤、难点解释)

野生猿林仔的博客 2万+

C语言-冒泡排序 (数据结构)

C语言-冒泡排序 (数据结构)

m0_54158068的博客 2200

Win10和Ubantu16.04双系统下,卸载Ubantu

Win10和Ubantu16.04双系统下,卸载Ubantu 机器配置 华硕主板,英伟达显卡(这不是重点) Win10与Ubantu16.04均为UFFI分区(如果不知道这个也不需要在意,一般默认的都是这样,鸵鸟原则) 清除Ubantu系统 一般按照常规的方法来删除Ubantu,都是直接将磁盘管理器里面的关于Ubantu的磁盘清空,但是还会留下一个UFFI分区,如果不进行删除的话,开机时候还是会有...

qq_33289694的博客 391

数据结构——冒泡排序(C语言)

C语言详解冒泡排序一、基本思想二、算法实现及优化三、代码清单 一、基本思想 冒泡排序是交换排序中最易理解也最经典的一个排序,其基本思想是从左向右依次比较相邻两个元素的大小,如果左边大于右边就交换,一趟排序后就可以让最大的值浮到最右侧。不断重复这个操作就可以让数组有序。 二、算法实现及优化 想要实现冒泡排序,我们首先写出一趟冒泡排序,很简单,从左向右依次比较即可,只要左边大于右边就发生交换 注意: 数组有n个元素,我们从数组的第1个元素开始比较,到数组的第n-1个元素结束,共比较了n-1次。例如下图,从第1

6505

AI测试:手把手教你用AI创建流程图「喂饭教程」

本文介绍了如何利用next-ai-draw-io开源项目,通过AI快速生成专业流程图,提升测试工作效率。该工具支持自然语言交互,兼容多种AI模型(如OpenAI、Claude等),并集成draw.io图表引擎,实现实时编辑。

blues_C的博客 759

RAG系统中Reranker模型选型实战

本文详细介绍了RAG系统中Reranker模型选型实战,希望能对学习RAG的同学们有所帮助。 文章目录 1. 前言 2. 思路解析 3. 测评数据集构建 3.1 步骤一 3.2 步骤二 3.3 数据示例 3.4 总结 4. 实战代码 4.1 本地模型 4.2 使用第三方的Reranker模型API

herosunly的博客 17万+

数据结构(c语言)--排序算法之交换排序(冒泡排序、快速排序)

王道数据结构(c语言)--排序算法之交换排序(冒泡排序、快速排序)

weixin_46625488的博客 502

别再用LabelImg了!我手搓了一个C#“一站式”YOLO工具箱,标注训练推理全搞定

这个工具箱目前已经在两个小型产线项目中试用,反馈非常好。效率提升:原本需要 2 天完成的“数据准备 - 训练 - 验证”循环,现在缩短到了 2 小时。门槛降低:产线技术员经过 10 分钟培训,就能独立完成新产品的模型迭代。当然,它还有改进空间未来计划集成主动学习功能:自动筛选出置信度低的图片,推荐优先标注。支持多模型管理:方便在不同产品型号间快速切换。增加PLC 通信模块:直接在推理界面配置 IO 信号,实现真正的软硬联动。最后想说工具的本质是服务于人。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 442

【C语言】-- 数据结构 -- 交换排序类(冒泡排序,快速排序)(超详解+动图+源码)

包括时间复杂度,空间复杂度,稳定性(带图讲解)

weixin_64609308的博客 1222

福建公共资源交易平台 portal-sign与响应Data解密逆向实录

本文分析了福建公共资源交易电子公共服务平台的接口加密机制。通过抓包和代码分析,发现请求头中的portal-sign由MD5算法生成,包含固定秘钥和排序后的参数拼接。响应数据采用AES-256-CBC加密,需使用特定Key和IV解密。文章详细介绍了签名生成规则、参数处理流程及加密常量定位方法,为接口对接提供了技术参考。整个过程展示了如何通过逆向工程还原前端加密逻辑,最终实现脱离浏览器环境的纯协议调用。

自成背后的博客 1158

YOLOv11改进缝合FasterBlock | 一种新型轻量化卷积结构C3k2的设计与实证:兼顾精度与速度的改进方法(附代码)

YOLO系列一直是目标检测领域的明星算法,凭借其实时性和准确性在众多应用中占据一席之地。随着YOLO版本的不断迭代,网络架构逐渐变得更为复杂,尤其是在卷积模块的设计上。本文将介绍如何利用FasterNet的FasterBlock创新,并通过二次创新C3k2提出一种全新的卷积结构。该结构旨在提高YOLOv11的计算效率和准确性,特别是在视觉任务中的表现。我们的创新在保证高精度的前提下,有效降低了计算量和内存需求,特别适合在资源受限的设备上运行。

一键难忘的博客 907

数据结构实验之排序二:交换排序

数据结构实验之排序八:快速排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 给定N(N≤10^5)个整数,要求用快速排序对数据进行升序排列,注意不得使用STL。 Input 连续输入多组数据,每组输入数据第一行给出正整数N(≤10^5),随后给出N个整数,数字间以空格分隔。 Out...

weixin_44040169的博客 167

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

排序之交换排序(快排和冒泡)

题目: 数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 冒泡排序和快速排序都是基于”交换”进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数...

小自洽 397

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

c语言数据结构-------------交换排序

printf("冒泡排序");printf("快速排序");

2301_77589543的博客 621

排序:交换排序(冒泡排序、快速排序)

/* 快速排序算法:首先选定1个元素作为中间元素,然后将所有元素与之比较, 将元素划分为两块,再对子块进行快速排序。 */ #include using namespace std; int Sort(int a[], int font, int back); void QuickSort(int a[], int font, int back); const int alen = 10

DK_dyon的专栏 547

SDUT OJ 数据结构实验之排序二:交换排序

数据结构实验之排序二:交换排序 Time Limit:1000 msMemory Limit:65536 KiB SubmitStatisticDiscuss Problem Description 冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。 ...

weixin_33939380的博客 67

C语言(排序算法1)(冒泡排序与快速排序)

第二轮排序时,可以忽略最右边的位置开始排序(因为最右边是max,不会有其他数比它更大),在余下的数中还会有一个值是除了max以外最大的值,我们将其称为max-mini。冒牌排序的原理就是让每个相邻的元素比较大小,如果不满足次序,就要将两者的顺序调换过来。再使用递归使得所有的元素左边都是小于等于本身,右边的元素大于等于本身。3)每一轮冒泡排序结束后,就会有一个当前的最大值(或最小值)被送到最右边,下次排序时将这个元素忽略。1)找到“标准元素i”,使得i左边的所有元素都小于i,i右边的所有元素都大于i。

tomatop的博客 227

数据结构中各类排序算法

数据结构中各类排序算法 一、插入排序 1.直接插入排序  直接插入排序(straight insertion sort)的做法是:  每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。  第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1

沈波的专栏 5019
上一篇: 数据结构---插入类排序(直接插入排序、折半插入排序、希尔排序,C语言)
下一篇: 数据结构----选择排序(简单选择排序、堆排序,C语言)
小陆同学LLR
博客等级 码龄10年 213粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值