C语言冒泡函数的实现

在这里插入图片描述

在这里插入图片描述

冒泡函数

冒泡函数的原理

从数组的第一个元素开始,比较相邻的两个元素。
如果前一个元素大于后一个元素(升序排序),则交换它们的位置。
步骤1和步骤2,直到遍历整个数组。
上步骤,每次遍历都将最大的元素“冒泡”到数组的末尾。
复以上步骤,但不包括已排序的最大元素,直到整个数组排序完成。
如图:
在这里插入图片描述

代码展示

//假设进行升序排序
#include<stdio.h>
int main()
{
	int arr[] = { 9,8,7,4,5,6,1,2,3,0 };//数组中有10个元素
	for (int i = 0; i < 9; i++)//i<9进行解释①
	{
		for (int j = 0; j < 9-i; j++)//i<9-i进行解释②
		{
			if (arr[j] > arr[j + 1])//满足条件进行交换
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for (int i = 0; i < 10; i++)//打印数组,检验排序结果
	{
		printf("%d  ", arr[i]);
	}
	return 0;
}
//下边对内外循环做解释

外层循环

这里的i几位冒泡排序进行的趟数。数组中共有10个元素,我们称每进行一次从头到尾的冒泡排序(两个相邻元素间进行比较交换(如上arr[j]>arr[j+1]))为一趟冒泡排序。那么当进行完第一趟冒泡排序后数组中最大的几趟冒泡排序:所以我们可以看出当进行完第9趟排序后,数组中最小的数已经处于数组中第一个元素的位置。所以假设数组中数的个数为(n),那么共需要进行(n-1)趟冒泡排序,就可以将所有的元素升序排列了!

内层循环

这里的的j作为交换对数来解释。数组总共有10个元素,两两进行比较交换,那么共需要有九对数进行比较交换(即arr[0]和arr[1]、arr[1]和arr[2]、······依次进行),现在按照程序运行逻辑进行:首先i=0,开始进行第一趟冒泡排序; j<9,数组下标从0-8依次两两进行比较交换(即数组下标:0.1,1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9)共进行9对数字间的交换,完成后数组中最大的数字就处在数组中最后一个元素的位置,到这里第一趟冒泡排序结束。然后从i=1,开始进行第二趟冒泡排序。此时j<8,数组下标0-7共进行8对(即0.1,1.2,2.3,3.4,4.5,5.6,6.7,7.8)数字间的交换,交换完成后数组中仅比最大数小的一个元素就处在倒数第二个元素的位置啦。依次向后进行,每进行一趟冒泡排序,那么接下来需要进行比较的数对的对数就要减少一对,所以这就是为什么j<9-i.
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值