(1) 首先从原始数组中选择最小的一个数据,将其和位于第1个位置的数据交换
(2)接着从剩下的n-1个数据中选择最小的一个元素,将其和第2个位置的数据和第2个位置的数据交换
(3)然后这样不断重复,知道最后两个数据交换。最后,便完成了对原始数组从小到大的排序。
#include <stdio.h>
void SelectionSort(int *a,int len)
{
int i,j,k,temp;
for(i=0;i<len-1;i++)
{
k=i;
for(j=i+1;j<len;j++)
{
if(a[j]<a[k])
k=j;
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
int main()
{
int a[10]={12,23,52,11,53,24,77,38,46,100};
SelectionSort(a,10);
for(int i=0;i<10;i++)
{
if(i!=9) printf("%d ",a[i]);
else printf("%d\n",a[i]);
}
return 0;
}