两个元素交换,粗心导致的BUG!!!

来源:互联网 发布:成都淘宝代运营 编辑:程序博客网 时间:2024/05/27 10:44

交换 a,b
通常情况下是这样写就可以

int t;t=a;a=b;b=t;

但是如果交换
a[i]和a[a[i]]这个方法就不在适用了
例如:
交换的元素为:
i=3
a[i]=5;
a[a[i]]=8;
交换后元素应该为
a[5]=5,a[3]=8;
但是如果还按照老方法交换,结果会变为:
a[3]=8;
a[8]=5;
如果考虑到元素越界问题,将是一场灾难!
因为在交换元素的同时,另一个元素的下标也随之改变
所以应该这样写:

t = a[i];a[a[i]] = a[i];a[t] = t;