一、算法简介
以从小到大排序为例说明,选择排序法的过程为每一次从待排序的数据元素中选出最小的一个元素,放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,将其放在刚才已排序元素后面。以此类推,直到全部有序为止。具体过程举例如下:
二、具体案例
假如一个班有10个同学参加《C语言》考试,请录入这10位同学的成绩,用选择排序法,将成绩按从低到高的顺序排列打印出来。
三、案例代码
#include<stdio.h>
int main()
{
int a[10],i,j,p,s;
printf("请输入10个同学的《C语言》成绩:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
printf("这10位同学的成绩从低到高排序后为:\n");
for(i=0;i<10;i++)
{
p=i; //把待排序的第一个元素下标i给P
for(j=i+1;j<10;j++) //依次比较i后面的每一个数
{
if(a[p]>a[j]) //若后面的分数比待排序第一个分数低,则将下标交换
{
p=j;
}
}
if(i!=p) //若发现下标交换了,则把对应的分数也交换
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
}
for(i=0;i<10;i++) //打印排好序的分数
{
printf("%5d",a[i]);
}
return 0;
}