一、算法框图

【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

 

相关文章: