c语言选择排序法?

#include<stdio.h>intmain(){inta[6],max,min,i,j,ma,mi,t,mid;for(i=0;i<6;i++){scanf("%d... #include<stdio.h>
int main()
{
int a[6],max,min,i,j,ma,mi,t,mid;
for(i=0;i<6;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<3;i++)
{
min=a[i];
max=a[i];
for(j=i,mi=i,ma=i;j<6-i;j++)
{
if(a[j]<min)
{
min=a[j];
mi=j;
}
if(a[j]>max)
{
max=a[j];
ma=j;
}
}
t=a[i];
a[i]=a[mi];
a[mi]=t;
mid=a[5-i];
a[5-i]=a[ma];
a[ma]=mid;
}
for(i=0;i<6;i++)
{
printf("%d",a[i]);
printf(" ");
}

return 0;
}
哪里出错了??像1 2 4 3 5 6就不行,而有些就可以。。。。
展开
 我来答
听不清啊
高粉答主

2020-11-16 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include<stdio.h>

int main()

{ int a[6],max,min,i,j,ma,mi,t,mid;

  for(i=0; i<6; i++)

  { scanf("%d",&a[i]);

  }

  for(i=0; i<3; i++)

  { min=a[i];

    max=a[i];

    for(j=i,mi=i,ma=i; j<6-i; j++)

    { if(a[j]<min)

      { min=a[j];

        mi=j;

      }

      if(a[j]>max)

      { max=a[j];

        ma=j;

      }

    }

    t=a[i];

    a[i]=a[mi];

    a[mi]=t;

    if(ma==i)ma=mi; //增加了这一行 

    mid=a[5-i];

    a[5-i]=a[ma];

    a[ma]=mid;

  }

  for(i=0; i<6; i++)

  { printf("%d",a[i]);

    printf(" ");

  }


  return 0;

}

追答
一般不采用这样的办法来进行选择排序。因为如果使用这种方法排序的话,当最大值就在一开头的位置,当你把最小值交换到最前头的时候,原先的最大值就被更换位置,不再是原来的地方了,新增加的这一句话就是更改这个新的最大值所在的位置。
理工科老师
2020-11-16 · TA获得超过3289个赞
知道大有可为答主
回答量:5841
采纳率:70%
帮助的人:1121万
展开全部
这个比较难跟一般的不太一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一个疯子4444
2020-11-16 · TA获得超过323个赞
知道小有建树答主
回答量:619
采纳率:62%
帮助的人:164万
展开全部

#include<stdio.h>

int main()

{

int a[6],max,min,i,j,ma,mi,t,mid;

for(i=0;i<6;i++)

{

scanf("%d",&a[i]);

}

for(i=0;i<3;i++)

{

min=a[i];

max=a[i];

for(j=i,mi=i,ma=i;j<6-i;j++)

{

if(a[j]<min)

{

min=a[j];

mi=j;

}

if(a[j]>max)

{

max=a[j];

ma=j;

}

}

t=a[i];

a[i]=a[mi];

a[mi]=t;

if(ma==i) ma=mi;

mid=a[5-i];

a[5-i]=a[ma];

a[ma]=mid;


}

for(i=0;i<6;i++)

{

printf("%d",a[i]);

printf(" ");

}


return 0;

}

你的程序出现了鬼打墙现象,当ma本身最大的时候,被mi偷偷换掉了!加粗部分注意

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式