选择排序是从一个序列中选择最小的元素,然后与第一个元素进行位置交换,然后再第2个到最后一个元素之间选出最小(即整个序列第二小的元素)的元素,然后再与整个序列的第二个元素进行位置交换,然后再从第3个到最后一个元素之间选出最小(即整个序列第三小的元素)的元素,再与整个序列的第三个元素进行位置交换,重复上面的操作,知道到最后一个元素,见图说话:
转换为代码如下:
#include <stdio.h>
void SelectSort(int a[],int length)
{
int i,j,t,d;
for(i=0;i<length;i++)
{
d=i;
for(j=i;j<length;j++)
{
if(a[d]>a[j])
d=j;
}
t=a[d];
a[d]=a[i];
a[i]=t;
}
}
int main(void)
{
int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\nThe original array :\n");
for(i=0;i<10;i++)
printf("%-4d",a[i]);
SelectSort(a,10);
printf("\nThe sorted array:\n");
for(i=0;i<10;i++)
printf("%-4d",a[i]);
printf("\n");
return 0;
}