黑马程序员技术交流社区
标题:
关于数组中的元素置换
[打印本页]
作者:
魏龙爽
时间:
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