#include<stdio.h>
#define max 10
void sort(int array[],int a);
int sortmin(int array[],int a,int i);
int main()
{
int i;
int array[max]={2,8,6,4,3,9,10,1,7,5};
sort(array,max);
for(i=0;i<max;i++)
{
printf("%d ",array[i]);
}
while(1);
return 0;
}
void sort(int array[],int a)
{
int temp,i,min;
for(i=0;i<a;i++)
{
min=sortmin(array , a ,i);
if(min!=i)
{
temp=array[min];
array[min]=array[i];
array[i]=temp;
}
}
}
int sortmin(int array[],int a,int i)
{
int j,k=i;
for(j=i+1;j<a;++j)
{
if(array[k]>array[j])
{
k=j;
}
}
return k;
}
思路:从第一个数开始找出一个最小或者最大的数,与第一个数交换,然后接着从第二个数开始循环该过程到倒数第二个数完成排序。
优缺点:移动和记录的次数少,但是不稳定。