下面的算法属不属于简单选择法?

来源:百度知道 编辑:UC知道 时间:2024/04/28 16:42:47
#include<stdio.h>
int main(void)
{
int i,j,k,temp,a[10];
printf("please input 10 numbers\n");
for(i=0;i<10;i++)
{
printf("input %d numbers\n",i+1);
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if (a[j]<a[k])
{
temp=a[k];a[k]=a[j];a[j]=temp;
}
}
}
printf("排序后为:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
我就是问是不是简单选择法排序!!!!!!!!!!?????

所谓简单选择排序就是每趟从未排序数据中选一个最小(最大),放到已排序数据的前面(后面)。你这个就已经是选择排序了,但移动(交换)的次数太多。
你可以改成
for(i=0;i<10;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if (a[j]<a[k])
{
k=j;
}
}
if(i != k ){
temp=a[i];a[i]=a[k];a[k]=temp;
}
}
这样比较是n*n/2 移动是2n次

什么选择法,是排序的方法
输出的顺序是从小到大的排序法.