1. 程式人生 > >【C語言】簡單排序(三)選擇排序

【C語言】簡單排序(三)選擇排序

一、演算法框圖

二、程式碼實現

/********************
名稱:選擇排序
作者:豆豆 
********************/
#include<stdio.h>
#define LENGTH 6								//巨集定義數列長度為 6 

int main()
{
	//【初始化】數列
	int a[LENGTH]={18,8,64,56,34,7}; 			//這裡用到了數列長度 6	
	int s=0;									//用來儲存最小數字的【序號】						 
	
	//列印初始數列,檢視初始化是否成功
	printf("--------------------\n\n"); 
	printf("初始數列為:\n");
	printf("%d %d %d %d %d %d\n\n",
			a[0],a[1],a[2],a[3],a[4],a[5]); 	//避免這行太長,加了一個換行 
	printf("--------------------\n");
	
	//開始排序
	for(int i=0;i<LENGTH-1;i++)					//第一層迴圈,i代表【趟數】 
	{											//選擇排序【趟數】可以比數列長度小 1,因為最後一個一定是最大值 
		s=i;
		printf("【第%d趟】\n",i+1); 
		for(int j=i;j<LENGTH;j++)				//第二層迴圈,j代表【每一趟】數字的【序號】 
		{
			if(a[s]>a[j])
				s=j;
		}
		int t;									//快取變數
		//交換 
		t		=	a[i]	;
		a[i]	=	a[s]	;
		a[s]	=	t		; 
		printf("%d %d %d %d %d %d\n",
				a[0],a[1],a[2],a[3],a[4],a[5]);	
		printf("--------------------\n");
	} 
	
	//輸出結果 
	printf("\n排序後數列為:\n");
	printf("%d %d %d %d %d %d\n",
			a[0],a[1],a[2],a[3],a[4],a[5]);
	return 0;
}

三、執行結果

--------------------

初始數列為:
18 8 64 56 34 7

--------------------
【第1趟】
7 8 64 56 34 18
--------------------
【第2趟】
7 8 64 56 34 18
--------------------
【第3趟】
7 8 18 56 34 64
--------------------
【第4趟】
7 8 18 34 56 64
--------------------
【第5趟】
7 8 18 34 56 64
--------------------

排序後數列為:
7 8 18 34 56 64