C语言代码,if(k!=i) {t=x[i];x[i]=x[k];x[k]=t}不懂,具体代码如下

main()
{int *p,i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");
for(i=0;i<10,i++)
printf("\n")
p=a
sort(p,10);
for(p=a,i=0;i<10;i++)
{printf(%d),*p};p++;}
printf("\n");
}
sort(int x[],int n)
{int i,j,k,t;
for(i=0;i<n-1,i++)
{k=i;
for(j=i+1,j<n;j++)
if (x[j]>x[k]) k=j;
if(k!=i)
{t=x[i];x[i]=x[k];x[k]=t}
}
}

这个题目是将a[10]这个数组排序,
for(i=0;i<n-1,i++)
{ k=i;
for(j=i+1,j<n;j++)
if (x[j]>x[k]) k=j;
if(k!=i)
{
t=x[i];x[i]=x[k];x[k]=t}
}
}
第一个for循环是指循环当前的数组
第二个for循环是内循环,将第一个for循环所取到的值依次跟后面比较
当这个后面的数大于大于当前数的时候,就将后面数的数组下标赋值给K
判断 假如K 不等于i 的话
就将K 的值跟 i 的值互换位置

这代码应该是将数组从大到小排列追问

k和i是什么关系?k代表什么

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-27
这个就是比较相邻两个数字的大小,把大的放前面。如果输入的数是3,7,9 就会变成 7,9,3
第2个回答  2013-08-27
你这段代码,花括号不匹配,那段代码就是在交换数据,t作为桥梁。
相似回答