編程小白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]);
	}
}

測試結果 

 

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