/*选择排序法*/
所谓的选择是什么意思呢,选择就是于万千花丛中择其一,在选择排序法中说的就是,每一次循环过程中,通过比较选择出你需要的**最值**。
选择排序法的过程是,通**过比较,选择出每一轮中最值元素,然后把他和这一轮中最最前面的元素交换**,所以这个算法关键是要记录每次比较的结果,即每次比较后最值位置先来看看选择排序的过程:
数组排序前 7 23 12 4 33 21 2 17 13 9
第一轮循环 2 23 12 4 33 21 7 17 13 9
第二轮循环 4 12 23 33 21 7 17 13 9
第三轮循环 7 23 33 21 12 17 13 9
第四轮循环 9 33 21 12 17 13 23
第五轮循环 12 21 33 17 13 23
第六轮循环 13 33 17 21 23
第七轮循环 17 33 21 23
第八轮循环 21 33 22
第九轮循环 22 33
通过这个过程,我们可以看到,每轮循环过程中,都会找出这个最值元素,下一轮排序时就不用再考虑这个元素了。
代码如下:
#include<stdio.h>
int main()
{
int n;
int a[100];
while(scanf("%d",&n)!=EOF)
{
int i,j,k,s;
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<n-1; i++)
{
k=i;
for(j=i+1; j<n; j++)
{
if(a[j]<a[k])
k=j;
}
if(k!=i)
{
s=a[i];
a[i]=a[k];
a[k]=s;
}
}
for(i=0; i<n; i++)
printf("%d ",a[i]);
}
return 0;
}