#C语言学习笔记#排序数字问题(冒泡法)

//《C语言综合项目实战》项目五
//对数字进行排序问题,本项目使用的是冒泡法进行排序,需要使用for循环和if条件的嵌套.
//以及注意输入数字时数组是否会溢出。
#include<stdio.h>//标准的输入输出头文件<stdio.h>
#define N 255//预编译 N 255,防止在输入数字时数组溢出报错。
int main() {
	int a[N] = { 0 }, b, c, d, f;//声明整型变量b,c,d,f,声明整型数组a并且下标为N且初始化。
	//b用于存储数组下标-1。(用户想要输入几个数字)
	//c用于for循环的自增长数和数组下标。
	//d用于数组下标。
	//f用于中间变量,进行交换数据。
	printf("请输入要输入几个数字(<255):");
	scanf_s("%d", &b);
	printf("请输入数字:");
	for (c = 0; c < b; c++)//for循环,用户输入数字。
	{
		scanf_s("%d", &a[c]);
	};
	for (c = 0; c < b; c++)                 //for循环的嵌套使用实现冒泡法的实现。
	{                                          //第一个数与下一个数进行对比,若第一个数大于第二数。
		for (d =c; d < b; d++)            //则说明,目前最小值为第二个数,则将两个位置的数据交换。
		{                                     //此时,再不考虑后面数据的情况下,最小值永远是第一位。
			if (a[c] > a[d])                //现第二位数据已考虑完毕,开始第一个数据比较第三个数据。
			{                                 //由此同理类推。
				f = a[c];                   //需注意的是,第一轮比较完后,第一位是最小值,则下一轮无需比较第一位。
				a[c] = a[d];               //这就是第二个for循环d=c的原因,则开始不考虑第一个数据。
				a[d] = f;                  //由第二个数据依次和后面比较,交换数据。
			}
		}
	}
	for (c = 0; c < b; c++) {       //for循环,依次输出数组中排列好的数据。
		printf("%d ", a[c]);
	}
}
//总结:冒泡法应该注重原理,可通过笔纸进行模拟,或者中间输出一些数据,探究其过程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值