数组元素交换。。有点迷糊

小青年 2011-07-31 03:40:17

if(array[j]>array[j+1])
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}





大括号里 是元素交换代码。。我有点看不懂。。哪位帮个忙。。麻烦详细解释一下好吗。。从内存解释更好。~
...全文
273 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2011-07-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 liuyuanyuan0802 的回复:]
Java code


if(array[j]>array[j+1])
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}






大括号里 是元素交换代码。。我有点看不懂。。哪位帮个忙。。麻烦详细解释一下好吗。。从内存解释更好。~
[/Quote]
这个问题涉及不到内存解释,数组是个变量,数组元素本身也是一个变量(通过数组下标来定位改变量),所以这里只是单纯的变量赋值问题,如果了解变量赋值语句,就应该能看懂
JavaUpgrade 2011-07-31
  • 打赏
  • 举报
回复
if(array[j]>array[j+1])//判断大小,如果array[j]>array[j+1],就执行括号里面的语句
{
temp=array[j]; //把array[j]的值赋值给temp,这是temp的值就是array[j]的值
array[j]=array[j+1];//把array[j+1]的值赋值给array[j],这是array[j]的值就是array[j+1]的值
array[j+1]=temp;//把temp的值赋值给array[j+1],这是array[j+1]的值就是temp的值
}
例如:你给他们赋值,temp=5;array[j]=7;array[j+1]=6;看if的条件
就会执行下列操作:
temp=array[j]; 这句赋值以后,temp的值就不是5了,而是 7
array[j]=array[j+1]; 这句赋值以后,array[j]的值也不是7了,而是6
array[j+1]=temp; 这句赋值以后,array[j+1]的值就变成7 了,
从新取出结果 temp=7,array[j]=6,array[j+1]=7
这样,你就能看出来了,array[j]和array[j+1]对调了值
以上的方法就是对数据进行排序的方法==比较发(我自己这样叫的,呵呵)
彩票虫虫 2011-07-31
  • 打赏
  • 举报
回复
支持一楼,解释的已经很到位了.
beannian 2011-07-31
  • 打赏
  • 举报
回复
是的,一楼的解释不错,数组的大小是在初始化时就分配好了的,如果要交换,就得要一个额外的空间作为临时的交换区,也就是temp
magong 2011-07-31
  • 打赏
  • 举报
回复
数组的每个元素都是一个变量,
变量是杯子,变量引用的值或对象是水,其他解释如1楼所述。
向晨宇 2011-07-31
  • 打赏
  • 举报
回复
到纸上写一下过程就知道了 temp是临时变量
若鱼1919 2011-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 m2214419115 的回复:]
一杯可乐,一杯奶茶,怎么交换两个水呢,那就是另外找一个空杯子,可以先将可乐的水倒入空杯子,然后将奶茶倒入原来的可乐杯子,最后将已经有可乐的那个杯子的水再倒入原来的奶茶杯子里,就OK了
[/Quote]
挺形象!
水不多 2011-07-31
  • 打赏
  • 举报
回复
两杯水,一杯可乐,一杯奶茶,怎么交换两个水呢,那就是另外找一个空杯子,可以先将可乐的水倒入空杯子,然后将奶茶倒入原来的可乐杯子,最后将已经有可乐的那个杯子的水再倒入原来的奶茶杯子里,就OK了

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧