编程小白C语言--冒泡排序

题目要求

编写程序,使a[5]={2,4,1,-5,9},中的元素从小到大排序

思路分析 

冒泡排序算法的原理如下: 

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 

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

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

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

简而言之

第一轮

  • 2,4,1,-5,9  //2和4比较,2比4小,不做交换
  • 1,4,2,-5,9  //2和1比较,2 比1大,交换
  • 1,4,-5,2,9  //2和 -5比较,2比 -5大,交换 
  • 1,4,-5,2,9  //2和9比较,2比9小,不做交换

第二轮   //接着第一轮最后的结果进行

  • 1,-5,4,2,9  //4和 -5比较,4比 -5 大,交换
  • 1,-5,2,4,9  //4和2比较,4比2大,交换
  • 1,-5,2,4,9  //4和9比较,4比9小,不交换

第三轮  //接着第二轮最后的结果进行

  • -5,1,2,4,9  //1和-5比较,1比-5大,交换
  • -5,1,2,4,9  //1和2比较,1比2小,不交换

第四轮 //接着第三轮最后的结果进行

  • -5,1,2,4,9  //1和-5比较,1比-5大,交换

然后输出结果

撸写代码 

#include"stdio.h"
#define N 5  //宏定义 
int main ()
{	int a[N];	
	int i,j,t;	
	printf("请输入%d个元素:\n",N);	
	for(i<0;i<N;i++)
		{	
			scanf("%d",&a[i]);
		}
			for(i=1;i<=N-1;i++)
				{		for(j=0;j<N-i;j++)
					{			if(a[j]>a[j+1])
						{	 t=a[j];
							a[j]=a[j+1];
							a[j+1]=t;
						}
					}
				}
	printf("这些元素从小到大排列是 :\n");	
	for(i=0;i<N;i++)	
	{		
		printf("%d\t",a[i]);
	}
}

测试结果 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章