永发信息网

C语法 选择排序法

答案:2  悬赏:60  手机版
解决时间 2021-05-23 18:41
  • 提问者网友:wodetian
  • 2021-05-23 12:26


#include <stdio.h>
#define N 10
main()
{
int i,j,min,tem,a[N];

printf("please input ten num:\n");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");

for(i=0;i<N-1;i++)
{
min=i;
for(j=i+1;j<N;j++)
if(a[min]>a[j])
min=j;
tem=a[j];
a[j]=a[min];
a[min]=tem;
}

printf("After sorted \n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
}

这段程序中间在排序那段出了错,不知错在哪?!

最佳答案
  • 五星知识达人网友:雪起风沙痕
  • 2021-05-23 13:31

if(a[min]>a[j])
min=j;
tem=a[j];
a[j]=a[min];
a[min]=tem;这段程序当min=j时,再进行交换就没有意义了,因为a[i]的值不会改变;


应改为if(min!=i)


{term=a[i];a[i]=a[min];a[min]=tem;}

全部回答
  • 1楼网友:底特律间谍
  • 2021-05-23 15:02
for(i=0;i<N-1;i++) { min=i; for(j=i+1;j<N;j++) if(a[min]>a[j]) { min=j; tem=a[j]; a[j]=a[min]; a[min]=tem; } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯