一个C语言的题? 5

voidfun(inta[],intn){inti,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[j]<a[k]... void fun(int a[],int n)
{ int i,j,k,t;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k]) k=j;
t=a[k];a[k]=a[i];a[i]=t;
}
}
main()
{
int b[]={5,2,9,7,0,3},i;
fun(b,6);
for(i=0;i<6;i++)
printf(“%d”,a[i]);
printf(“\n”);
}

这道题i=1的时候 换了两次 本来a1=2,之后a1=3 答案是023579 可我的是032579
展开
 我来答
最大的宝宝
2020-01-08 · TA获得超过828个赞
知道小有建树答主
回答量:1569
采纳率:67%
帮助的人:393万
展开全部
这一看就是典型的排序,不用想都知道你的结果是错的。自己推容易出错,把它放入编译器里单步跟踪一下更好一些。如果想学会这个算法,找本数据结构的书看一看。在排序函数fun里,k作为枢点,左边的小于等于它,右边的大于等于它,不然,重新选择枢点。这个算法比冒泡算法强一些
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式