#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void selection_sort(int* a,int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)//0到n-2共n-1次循环
{
k=i;
for(j=i+1;j<n;j++)//从i+1一直寻找到an-1
{
if(a[j]<a[k])
{
k=j;//如果aj<ak,j赋值给k,此时ak是最小值
}
}
t=a[i];//交换ak和ai
a[i]=a[k];
a[k]=t;
}
}
int main()
{
int n;//共有n个整数待排序
int a[1025];
scanf("%d",&n);
int i;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);//输入n个待排序的数字
}
selection_sort(a,n);//调用选择排序函数
for(i=0;i<n-1;i++)
{
printf("%d ",a[i]);//打印前n-1个数字 带空格
}
printf("%d\n",a[i]);//打印最后一个元素加换行符
}
选择排序要注意是n个元素的n-1次循环,每次都在ai到an-1中找到最小的那个元素(即选择)与本次循环的第一个元素交换,这样,n-1次循环之后,数组就是一个排好序的数组了。