黑马程序员技术交流社区

标题: 关于数组中的元素置换 [打印本页]

作者: 魏龙爽    时间: 2014-7-30 13:07
标题: 关于数组中的元素置换
数组中两个元素置换,是否可以省去temp,  直接 int(x)=int(y)  int(y)=int(x)
作者: fantacyleo    时间: 2014-7-30 13:21
…显然是不可以的。数组中的元素置换和两个变量置换,没有本质区别,除非你用位运算或其他一些技巧,否则都必须用到中间变量temp。你这种换法是行不通的
作者: 思维    时间: 2014-7-30 13:58
这个就好像两个箱子a和b,把b箱子里面的东西拿出来,如果a箱子里面有东西,是不可能放进去的。。。
作者: star5603    时间: 2014-7-30 14:14
你可以试试
作者: liubea    时间: 2014-7-30 14:18
数组中的元素置换也是一样的,需要中间变量。当也有特殊情况,如 int a=5; int b=4; a=a+b;b=a-4;a=a-b;不需要中间变量也实现了a,b置换。
作者: 南柯一梦    时间: 2014-7-30 14:18
数组是引用类型数据,当int(x)=int(y)时y已经把x值覆盖掉了,等于是x=y了,所以不可以呀
作者: 侯岩卿    时间: 2014-7-30 14:25
很明显这样是不可的int x = y是把y的值赋给x,再执行到int y = x 时,这是x的值已经是y啦!就相当于是int y=y!所以这样不能达到替换的目的!只是把x的值替换成y
作者: 新语新空    时间: 2014-7-30 18:32
用异或可以,直接交换不用中间变量不行。
作者: LFW    时间: 2014-7-30 19:12
简单的说,假如开始 x = 3, y = 5;你执行了x = y,这时x =5,3就已经丢失了、然后执行y = x,这时y = 5.这道理就跟A瓶装油,B瓶装水一样,想让A水B油,就必须找个新的临时瓶子来。
作者: idency    时间: 2014-7-30 19:49
肯定不行,在第一次置换的时候,你的x已经不是之前的x了,已经是y了,所以第二次置换相当于还是把y赋值给了y;  还有,你写的置换的代码是错误的吧...哪有这种写法啊!
作者: 魏龙爽    时间: 2014-7-31 09:33
明白了
作者: 黑马-胡明    时间: 2014-7-31 09:49
你那方法不对
作者: 草鱼狂飙    时间: 2014-7-31 09:52
肯定不可以的,int(x)=int(y) 执行结束后x位置上的值与y位置上值就相等了,这样x的原值会被覆盖掉的
int(y)=int(x),这样y位置的值只会等于x覆盖后的值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2