一、算法框图

二、代码实现
/********************
名称:选择排序
作者:豆豆
********************/
#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