查询数组中最小的元素,与A[1]交换.然后再查询次最小的数,与A[2]交换.
#include<stdio.h>
void selection_sort(int arr[],int cnt)
{
int init_pos,pos,init_min,i;
for(init_pos=0;init_pos<cnt-1;init_pos++)
{
init_min=arr[init_pos];
pos=init_pos;
for(i=init_pos+1;i<cnt;i++)
{
if(arr[i]<init_min){
pos=i;
init_min=arr[i];
}
}
if(pos!=init_pos)
{
int tmp=arr[init_pos];
arr[init_pos]=arr[pos];
arr[pos]=tmp;
}
}
}
int main()
{
int arr[7]={1,3,11,7,2,4,6};
int i=0;
selection_sort(arr,7);
for(i=0;i<7;i++)
{
printf("%d/n",arr[i]);
}
getchar();
return 0;
}
参考:
1.<算法导论>第二版2.2-2