C语言之冒泡排序

 

ok,家人们,我今天来将一下C语言中的冒泡排序,希望这篇文章可以对大家有所帮助,我会进行细致分析,话不多说,go go go!!!26a83ce5cb9243f9b64adf2c738c765c.png

冒泡分析:(假设是升序排列)

1:利用for进行10次外部循环。(只是起到循环的作用,与内部没有关系)

2:再利用for进行内部循环。(每一次进行内循环都会少一次)

第一次循环,从第一个数开始,如果第一个数字比第二个数字大,那么进行交换数字,然后是第二个数与第三个数字进行比较,以此类推,直到最后两个数比较进行完,第一次内循环结束。通过这个过程我们可以判断出最大的数已经排到了最后一位,因为是每个相邻的数都进行了比较,因此下一次内部循环不必再比较最后两位,已经确定了最大的数在最后一位,所以接下来每次的内部循环次数少了一次。

冒泡排序的实现通常使用两层嵌套循环。外层循环控制总共进行多少轮比较,而内层循环执行相邻元素的比较和交换操作。

OK,看完解析我们来实战吧,让我们更加清楚怎么使用冒泡排序。

题目:

输⼊10个整数,然后使⽤冒泡排序对数组内容进⾏升序排序,然后打印数组的内容。

#include<stdio.h>
int main()
{
	int arr[10] = { 0 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	int j = 0;
	for (i = 0; i < 10; i++)//外部循环
	{
		for (j = 0; j < 10 - 1 - i; j++)//内部循环
		{
			if (arr[j] > arr[j + 1])//条件满足,数字交换
			{
				int temp;
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for (i = 0; i < 10; i++)//输出交换后的数组
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

家人们,我们现在来分析一下内部循环条件 j<10-i-1。

因为我们的数组只有10 个数,所以只能到 arr[9] ,下面表达式中有 arr[j+1],当我们 i=0 时,我们内部第一次循环的 j 最大为 8,所以表达式就有了-1这一项,i起始数字0,- i 就是满足了我们每次循环少一次。

 

哈哈哈,到这里就结束了,感谢观看🥰🥰🥰

 

  • 32
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值