C语言 冒泡算法

泡排序算法的运作如下:

 

1, 比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。

 

2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

 

3. 针对所有的元素重复以上的步骤,除了最后一个。

 

4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 

代码实例(⊙o⊙)…

/*方法 冒泡排序!!

原理:遍历和交换

16 25 9 90 23

某个数字小于后面的数字,那么就交换

1 25 16 9 90 23

2 25 16 9 90 23

3 25 16 90 9 23

4 25 16 90 23 9 最小的数字来到了最后

需要比较多轮,(数组长度-1)轮

每一轮的次数较上一轮-1

数组长度-1)-当前的轮数

 */
#include <stdio.h>
#define  n 5  //宏定义
int main ()
{   int i ,j;//循环变量
	int h ;  //用来交换的临时变量
	int nums[n];
	for (i=0;i<n;i++)
	{
		scanf ("%d",&nums[i]);
	}

	//外层循环控制轮数
	for (i=0;i<n-1;i++)
	{   //内层循环控制次数
		for (j=0;j<n-i-1;j++)
		{
			if (nums[j]<nums[j+1])
			{   h=nums[j+1];
			    nums[j+1]=nums[j];
				nums[j]=h;
			}
		}
	}
	printf ("降序输出");
	for (i=0;i<n;i++)
		printf ("%d\t",nums[i]);
	printf("\n");
	for (i=0;i<n-1;i++)
	{   //内层循环控制次数
		for (j=0;j<n-i-1;j++)
		{
			if (nums[j]>nums[j+1])
			{   h=nums[j+1];
			    nums[j+1]=nums[j];
				nums[j]=h;
			}
		}
	}
	printf ("升序输出");
	for (i=0;i<n;i++)
		printf ("%d\t",nums[i]);
	return 0;
}
/*降序输出99      25      23      16      9
升序输出9       16      23      25      99      请按任意键继续. . .
*/
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值