c语言关于逆向排序

来源:百度知道 编辑:UC知道 时间:2024/06/09 03:40:26
为什么逆向排序的时候,i的取值只能到 n/2 若到 n 那么交换了的书又交换回去了,能详细说明下嘛,我没太明白
int a[]={1,2,3,4,5},i,j,n,t;
n=3;
for(i=0;i<=n/2;i++)
{t=a[i];
a[i]=a[n-i];
a[n-i]=t;}
for(i=0;i<5;i++)
printf("%d\n",a[i]);

重要的是思想,不是代码.
原来:1 2 3 4 5
第一:5 2 3 4 1 // 第一个和最后一个交换
第二:5 4 3 2 1 // 第二个和倒数第二个交换

上面2次就交换完毕, 因为交换1次, 是2个数据的位置变动了, 奇数的时候中间的数不用动. 所以是 n/2.

若继续交换 则 反反得正,又换回来了...