初识C语言——冒泡排序法

本文介绍了冒泡排序的基本概念和工作原理,并提供了详细的C语言实现代码,包括基础版本和经过优化的版本,帮助读者理解冒泡排序算法的工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.什么是冒泡排序?

2.冒泡排序的原理


1.什么是冒泡排序?

冒泡排序是一种经典的排序方法,在一组数据中,访问两个相邻的元素,如果元素不符合顺序就把它们交换位置,符合的话就不用交换位置,依此类推,直到所有元素都排好序列,就结束了,每个元素就像泡泡一样,根据大小的不同而冒到数组的不同一侧。

2.冒泡排序的原理

就比如说一组数据

 要把它升序排出。

一次交换两个元素的位置,一趟就把一个元素的序列排好。

 这是第二趟

 第三趟

我们来比较一下这三趟。 

 第一趟需要交换9次,第二趟需要交换8次,第三趟需要交换7次,那么一共需要9趟。

用一个函数来实现冒泡排序。

#include<stdio.h>

void Bubble_Sort(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz - 1; i++)       //sz-1决定趟数。
	{
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)   //sz-1-i决定冒泡的次数
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
}

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	Bubble_Sort(arr, sz);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

写到这里,冒泡排序的一个算法就完成了。接下来再来提供一个优化版的。

#include<stdio.h>

void Bubble_Sort(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz - 1; i++)     //sz-1:最后一趟剩余一个元素,该堂冒泡可以省略。
	{
		int isChange = 0;
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
				isChange = 1;			//如果本次冒泡进行数据交换了,说明本次数据是无序的;isChange为1。
			}
			if (!isChange)				//如果本次冒泡中,元素没有进行交换,
					return;					//说明数据已经有序了,后面的冒泡就不用再进行了。
		}
	}
}

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	Bubble_Sort(arr, sz);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

这种优化也算是提高了效率。

今天的分享就到这里了,有什么建议尽管提出来。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值