A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏龙爽 中级黑马   /  2014-7-30 13:07  /  1276 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数组中两个元素置换,是否可以省去temp,  直接 int(x)=int(y)  int(y)=int(x)

12 个回复

倒序浏览
…显然是不可以的。数组中的元素置换和两个变量置换,没有本质区别,除非你用位运算或其他一些技巧,否则都必须用到中间变量temp。你这种换法是行不通的
回复 使用道具 举报
这个就好像两个箱子a和b,把b箱子里面的东西拿出来,如果a箱子里面有东西,是不可能放进去的。。。
回复 使用道具 举报
你可以试试
回复 使用道具 举报
数组中的元素置换也是一样的,需要中间变量。当也有特殊情况,如 int a=5; int b=4; a=a+b;b=a-4;a=a-b;不需要中间变量也实现了a,b置换。
回复 使用道具 举报
数组是引用类型数据,当int(x)=int(y)时y已经把x值覆盖掉了,等于是x=y了,所以不可以呀
回复 使用道具 举报
很明显这样是不可的int x = y是把y的值赋给x,再执行到int y = x 时,这是x的值已经是y啦!就相当于是int y=y!所以这样不能达到替换的目的!只是把x的值替换成y
回复 使用道具 举报
用异或可以,直接交换不用中间变量不行。
回复 使用道具 举报
LFW 中级黑马 2014-7-30 19:12:38
9#
简单的说,假如开始 x = 3, y = 5;你执行了x = y,这时x =5,3就已经丢失了、然后执行y = x,这时y = 5.这道理就跟A瓶装油,B瓶装水一样,想让A水B油,就必须找个新的临时瓶子来。
回复 使用道具 举报
肯定不行,在第一次置换的时候,你的x已经不是之前的x了,已经是y了,所以第二次置换相当于还是把y赋值给了y;  还有,你写的置换的代码是错误的吧...哪有这种写法啊!
回复 使用道具 举报
明白了
回复 使用道具 举报
你那方法不对
回复 使用道具 举报
肯定不可以的,int(x)=int(y) 执行结束后x位置上的值与y位置上值就相等了,这样x的原值会被覆盖掉的
int(y)=int(x),这样y位置的值只会等于x覆盖后的值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马