选择法排序原理:一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上数。 具体实现代码如下:
#include<stdio.h>
/****************************************
**选择排序法对十个整数进行排序 ***
****************************************/
//n为数组长度;
void sort(int a[],int n)
{
int temp,min;
for(int i=0;i<n;i++)
{
min=i;//先假设最小下标为i
for(int j=i+1;j<n;j++)
if(a[j]<a[min])
min=j;//对i之后的数进行扫描将最小的数赋予min
if(min!=i)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}//判断min与i是否相等,若=则说明原假设正确反之交换数值
}
}
//用main函数验证
void main()
{
int a[10];
printf("please input the array a:\n");
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
}