一、算法描述
- 在一遍遍历中将最小的数排到前面
- 几次遍历后前面就是排号序的
- 经过n-1次遍历
二、选择排序代码
void select(int a[],int n)
{
int i,j,min,temp;
for(i=0;i<n-1;i++)
{
min = i;//假设当前下标最小
for(j=i+1;j<n;j++)
if(a[j]<a[min]) min = j;
if(min!=i)
{
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}
三、代码测试
#include<stdio.h>
void select(int a[],int n)
{
int i,j,min,temp;
for(i=0;i<n-1;i++)
{
min = i;//假设当前下标最小
for(j=i+1;j<n;j++)
if(a[j]<a[min]) min = j;
if(min!=i)
{
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}
int main()
{
int n,i;
printf("请输入需要排序的数的个数:\n");
scanf("%d",&n);
int a[n];
printf("请输入需要排序的数:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
select(a,n);
printf("选择排序的结果:\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
![](https://img-blog.csdnimg.cn/f617ede67ff14abdb740fae28f77921e.png)