1.算法思路
第 1 趟:从n个数据中找出最小的数据和第一个数据交换
;
第 2 趟:从第二个数据开始的n-1个数据中再选出最小的数据与第二个数据交换
;
以此类推…
第 i 趟:则从第 i 个数据开始的 n-i+1 个数据中选出最小的数据与第i个数据交换,直到整个序列有序
。
2.代码实现
#include "stdio.h"
#define SIZE 100
int main()
{
int i,j,data[SIZE],temp; //定义变量和数组
int min_a;
printf("请输入%d个整数:",SIZE);
for(i=0;i<SIZE;i++)
scanf("%d",&data[i]);
for(i=0;i<SIZE;i++)
{
min_a=i; //假设第i个元素最小
for(j=i+1;j<SIZE;j++) //循环j从第i+1个元素到SIZE-1个
if(data[j]<data[min_a]) //若第j个元素小于当前最小元素
min_a=j; //j赋值给min_a
temp=data[min_a]; //data[min_a]与data[i]做交换
data[min_a]=data[i];
data[i]=temp;
}
printf("排序后");
for(i=0;i<SIZE;i++) //输出排序后的每个数组元素值
printf("%5d",data[i]);
return 0;
}