C语言--冒泡排序【图文详解|经典算法】

本文详细介绍了冒泡排序的过程,包括思路分析、C语言代码示例以及如何将乱序数组升序排列。通过动态图解辅助理解,便于学习者掌握冒泡排序方法。

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


一. 问题描述⭐

把乱序的数组中的数字从小到大排序好,并打印出来。对于这个问题我们就可以使用冒泡排序。 对于数组arr[]={10,9,8,7,6,5,4,3,2,1,0}我们排序好之后变为arr[]={0,1,2,3,4,5,6,7,8,9,10}。


 动态图解:


二.思路分析 ⭐

首先看数字10,先和它的右边一位元素9比较,若左边的大于右边,则两个数交换位置,接着再进行第二次比较,也就是说10大于8,那么10与8进行交换位置,依次类推,因为这个数组有11个元素,所以10要处于他的正确位置要比较10次,数组变为9,8,7,6,5,4,3,2,1,0,10分别和9,8,7,6,5,4,3,2,1,0这10个数字进行比较,10这个元素经过比较后处于他的正确位置,我们称为一趟冒泡排序,那么再看元素9,要比较9次,数组变为8,7,6,5,4,3,2,1,9,10,因为有11个元素,所以跑10趟的冒泡排序就完成了排序。


  • 图解 


 三.完整代码⭐

#define _CRT_SECURE_NO_WARNINGS //这一句必须放在第一行
#include<stdio.h>
#include<stdlib.h>
//冒泡排序
void Bubble_sort(int arr[], int sz)
{
	int tmp = 0;
	for (int i = 0;i < sz - 1;i++)//sz个元素要跑sz-1趟才能完成排序
	{
		for (int j = 0;j < sz - 1 - i;j++)//每一趟会少一个数字
		{
			if (arr[j] > arr[j + 1])//升序排序
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;//交换相邻的两个数字
			}
		}
	}
}

int main()
{
	int n;
	printf("请输入数组的个数\n");
	scanf("%d", &n);
	int* arr = (int*)malloc(n * sizeof(arr));
	printf("需要排序的数组是\n");
	for (int i = 0;i < n;i++)
	{
		scanf("%d", &arr[i]);
	}
	Bubble_sort(arr, n);
	printf("升序后的数组是\n");
	for (int i = 0;i < n;i++)
	{
		printf("%d ", arr[i]);
	}
	free(arr);
	return 0;
}

四.运行结果⭐


创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小小苏

感谢大佬支持!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值