【冒泡排序设计】

【冒泡排序设计】

思路

冒泡排序这个算法,对于我这样的初学者来说,也不是很简单!!!(没有想象的那么简单)!
 它的核心思想是:两两相邻的元素进行比较,如果符合要求,则不交换,不符合要求,则两个元素交换!它是在一块连续的内存中进行比较,它的效率相对较高

 对于一排数字:5,4,3,1,2,8,7这7个数字两两相邻进行比较,先进行一趟冒泡比较!没进行一趟冒泡比较一定能确定一个元素的位置,那么,有n个元素,则进行n-1趟排序就可以确定没有元素的位置,而n个元素,交换n-1对,能确定1个元素的位置。
  5 4 3 1 2 8
  4 5 3 1 2 8
  4 3 5 1 2 8
  4 3 1 5 2 8
  4 3 1 2 5 8
  4 3 1 2 5 8

代码

c 复制代码
void bubble_sort(int arr[], int sz)
{
	//共有sz个元素,每一趟确定一个元素,则需确定sz-1趟
	for (int i = 0; i < sz - 1; i++) {
		//有几对的比较
		//如果发现在一趟中没有元素交换,则已经排序完毕
		int flag = 1;
		for (int j = 0; j < sz - 1 - i; j++) {
			if (arr[j] > arr[j + 1]) {
				//交换
				flag = 0;
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
		if (flag)
			break;
	}
}
int main()
{
	int arr[] = {5,4,3,1,2,8,7};
	int sz = sizeof(arr) / sizeof(int);
	//这儿再说一下,sz不能在函数内部算,在函数内部arr是一个指针变量
	bubble_sort(arr, sz);
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	return 0;
}

结果


 完结!!!

相关推荐
我是一只菜菜几秒前
Pointer--Learing MOOC-C语言第九周指针
c语言·开发语言
BFT白芙堂18 分钟前
松灵斯坦福Mobile ALOHA同款 | 通过低成本全身远程操作实现双手机器人移动操控学习
人工智能·学习·机器人·移动机器人·论文解读·开源双臂遥操作系统·松灵cobotmagic
蒜鸟~蒜鸟27 分钟前
基于 C 语言的网络单词查询系统设计与实现(客户端 + 服务器端)
c语言·网络·oracle
AI浩36 分钟前
深度学习核心损失函数详解:交叉熵、MSE、对比学习(InfoNCE)
人工智能·深度学习·学习
m0_578267861 小时前
从零开始的python学习(九)P134+P135+P136+P137+P138+P139+P140
开发语言·python·学习
深蓝学院1 小时前
[ICCV25]TRACE:用3D高斯直接学习物理参数,让AI“推演”未来场景
人工智能·学习·3d
小莞尔3 小时前
【51单片机】【protues仿真】基于51单片机音乐盒(8首歌曲)系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
智者知已应修善业3 小时前
【51单片机三路抢答器定时器1工作1外部中断1】2022-11-24
c语言·经验分享·笔记·嵌入式硬件·51单片机
霜绛3 小时前
Unity:XML笔记(一)——Xml文件格式、读取Xml文件、存储修改Xml文件
xml·笔记·学习·unity·游戏引擎
j_xxx404_4 小时前
数据结构:单链表的应用(力扣算法题)第二章
c语言·数据结构·算法·leetcode