黑马程序员技术交流社区
标题:
对数组中交换两个元素的位置写法原理不太理解,求明确解释
[打印本页]
作者:
柯玲
时间:
2012-7-15 17:52
标题:
对数组中交换两个元素的位置写法原理不太理解,求明确解释
如下代码:
public class SwapTest{
public static void main(String[] args) {
String[] strings=new String[]{"hello","thanks","bye-bye"};
swap(strings,1,2);
for(String str:strings){
System.out.println(str);
}
}
private static <T> void swap(T[] a, int i, int j) {
T tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
复制代码
作者:
陈冲
时间:
2012-7-15 18:07
本帖最后由 陈冲 于 2012-7-15 18:09 编辑
public class SwapTest{
public static void main(String[] args) {
String[] strings=new String[]{"hello","thanks","bye-bye"};
swap(strings,1,2);
for(String str:strings){
System.out.println(str);
}
}
private static <T> void swap(T[] a, int i, int j) {
T tmp=a[i]; //定义一个变量,临时存储数组中的元素,以免在交换的时候,数组元素被覆盖
a[i]=a[j];//将a[j]的值赋给a[i]如果没有上一行定义的tmp变量的话,a[i]会被a[j]覆盖掉,导致a[i]和a[j]元素的值相同
a[j]=tmp;//将临时存储的a[i]的值赋给a[j]
}
}
复制代码
以主函数中的数组为例:
strings={"hello","thanks","bye-bye"}
strings[0]="hello",string[1]="thanks",string[2]="bye-bye"
在调用swap()方法时,交换过程如下:
定义tmp
tmp=string[1];//tmp="thanks"; strings={"hello","thanks","bye-bye"}
string[1]=string[2];//strin1g="bye-bye";strings={"hello","bye-bye","bye-bye"}
string[2]=tmp;//string[2]="thanks";strings={"hello","bye-bye","thanks"}
所以,交换完毕后的数组是strings={"hello","bye-bye","thanks"}
输出结果为
hello
bye-bye
thanks
作者:
全海波
时间:
2012-7-15 18:08
01.public class SwapTest{
02. public static void main(String[] args) {
03. String[] strings=new String[]{"hello","thanks","bye-bye"};
04. swap(strings,1,2);
05. for(String str:strings){
06. System.out.println(str);
07. }
08. }
09. private static <T> void swap(T[] a, int i, int j) {
10. T tmp=a[i];//定义临时量,用于对数的存储,将a[i]的值赋值给tmp
11. a[i]=a[j];//将a[j]的值赋值给a[i]
12. a[j]=tmp;//将tmp的值赋值给a[j]
13. }
14.}
复制代码
作者:
全海波
时间:
2012-7-15 18:14
添加一个图示例:
作者:
全海波
时间:
2012-7-15 18:15
未命名.jpg
(405.47 KB, 下载次数: 22)
下载附件
2012-7-15 18:15 上传
作者:
杨康
时间:
2012-7-15 18:50
swap(strings, 1, 2);
//调用你定义的功能,把strings,数组中1位置,2位置传入该功能
T temp = a
;
//定义一个第三方变量,用来临时存储原来角标为i该位置的数据
a
= a[j];
//将角标j位置的变量的值赋给i位置
a[j] = temp;
//将临时变量存储的值赋给j位置
如下图标号步骤所示
2.jpg
(5.94 KB, 下载次数: 25)
下载附件
2012-7-15 18:50 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2