选择排序
选出数组中最小的元素,交换放入数组第一的位置;选出数组中次小的元素,交换放入数组中第二的位置,直到整个数组有序。通过不断选出剩余元素中的最小元素实现。
注:N个元素,只需要N-1趟交换操作(最后一个元素被自动归入正确的位置)
#include <stdio.h>
void swap(int *a,int *b)
{
if((a == NULL) || (b == NULL))
return;
int temp = *a;
*a = *b;
*b = temp;
return;
}
void selection(int a[],int len)
{
int i,j=0;
for(i=0;i<len-1;i++)//n个数,只需要n-1次排序就可以,剩下一个自动被归位。
{
for(j=i+1;j<len;j++)
{
if(a[i] > a[j])
swap(&a[i],&a[j]);
}
}
return;
}
void main()
{
int i=0;
int a[10] = {5,3,44,4,12,123,7,99,6,1};
int len = sizeof(a)/sizeof(a[0]);
selection(a,len);
for(i=0;i<len;i++)
printf("%d ",a[i]);
printf("\n");
return;
}