欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-15 08:45:35
...
//《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]);
	}
}
//总结:冒泡法应该注重原理,可通过笔纸进行模拟,或者中间输出一些数据,探究其过程。
相关标签: C语言学习笔记