C語言之排序法

                                      C語言之排序法

排序是一種重要的、基本的算法。排序的方法有很多,本文將逐一介紹。。。。。

①冒泡排序法:每次將相鄰兩個數作比較,然後將小的調到前面。如果有n個數,則要進行n-1次比較。在第一趟比較中要進行n-1次的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。

#include<stdio.h>
int main()
{
	int num[10]={7,6,9,2,5,3,8,0,9,1};
	int i,j,temp;
	temp=num[0];

	printf("\n排序前的數: ");

	for(i=0;i<10;i++)//排序前的數 
		{
			printf("%d",num[i]);
			if(i!=10) printf(" ");
		}
	
/**********************************************************************************/
	for(i=0;i<9;i++)//10個數,那麼第一個數要和剩下的9個數做比較(0-8就有9個數了) 
		{
			for(j=0;j<9-i;j++)
				{
					if(num[j]>num[j+1]) 
						{
							temp=num[j];
							num[j]=num[j+1];
							num[j+1]=temp;
						}
				}
		}
/************************************************************************************/

	printf("\n\n排序後的數: ");	

	for(i=0;i<10;i++)
		{
			printf("%d",num[i]);
			if(i!=10) printf(" ");
			else printf("\n\n");
		}

	return 0;
}


 

②選擇排序法:所謂選擇排序法就是先將10個數中最小的數與num[0]對調;然後再將剩下的數num[1]~num[9]中最小的數與num[1]對調。。。。。 共比較9輪。
 

#include<stdio.h>
int main()
{
	int num[10]={7,6,9,2,5,3,8,0,9,1};
	int i,j,k,temp;
	temp=num[0];

	printf("\n排序前的數: ");

	for(i=0;i<10;i++)//排序前的數 
		{
			printf("%d",num[i]);
			if(i!=10) printf(" ");
		}

/*****************************************************************/	
	for(i=0;i<10-1;i++)
		{	k=i;//k用來記錄最小值的下標的,默認每輪的第一個 
			for(j=i+1;j<10;j++)
				{
					if(num[j]<num[k]) 
						k=j;// 保存最小值的下標
					temp=num[k];
					num[k]=num[i];//num[i] 是每輪最小的那個值 
					num[i]=temp;	
				}
		}
/*****************************************************************/	

	printf("\n\n排序後的數: ");	

	for(i=0;i<10;i++)
		{
			printf("%d",num[i]);
			if(i!=10) printf(" ");
			else printf("\n\n");
		}

	return 0;
}




 

 

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