各位程序高手帮帮忙,分析下面的题目(要详细的)和结果

来源:百度知道 编辑:UC知道 时间:2024/07/08 10:42:37
1、void sort( int a[ ], int n)
{ int i,j,t;
for (i=0;i<n-1;i+=2)
for (j=i+2;j<n;j+=2)
if (a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa,10);
for (i=0;i<10;i++)
printf("%d,'',aa[i]);
printf("\n");
}
要详细点的哦
答案是9,2,7,4,5,6,3,8,1,10
回答对的朋友能不能帮我分析一下

9
2
7
4
5
6
3
8
1
10

外层for是从a[0]也就是1开始的,以后步进是2,所以a[i]就是1-10的奇数。
j=i+2,所以a[j]也就是从下一下奇数开始与a[i]比较的,然后大数放在前面。

完成所有循环后,只对奇数进行了从大到小排序,而没对偶数进行处理。所以

这是什么?

1,10,3,8,5,6,7,4,9,2 我猜的....

如果楼主看不明白可以参照

for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;}

这个能看懂吧,一个简单的排序而已....只不过你给的程序,跨度是2而已