黑马程序员技术交流社区
标题:
数组排序时的交换方法问题
[打印本页]
作者:
左建飞
时间:
2012-7-24 17:59
标题:
数组排序时的交换方法问题
public static void selectSort(int[] arr)
{
for (int x = 0; x < arr.length-1; x++)
{
for (int y = x+1; y < arr.length; y++)
{
if (arr[x]>arr[y])
{
ChangePlace.changePlace2(arr[x],arr[y]);
}
}
}
}
复制代码
以上为我的排序方法。调用了ChangePlace类中的交换方法。
public class ChangePlace
{
public static void changePlace(int[]arr,int a,int b)
{
int temp;
temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
public static void changePlace2(int a,int b)
{
int temp=a;
a=b;
b=temp;
}
}
复制代码
这两个交换位置的方法只有changePlace才起作用,数组会排序,但是用changePlace2时就不起作用,数组不会排序。
这是为什么?
作者:
肖琦
时间:
2012-7-24 18:06
在方法changePlace(int[]arr,int a,int b)中,参数arr是引用传递,所以你在方法内部对arr作的改动是有效的。
但是changePlace2(int a,int b)中的a和b都是值传递,实质是相当于在方法内部又声明了两个变量a和b,你对他们的改动是不会影响到外面的数据的。
希望对你有帮助........
作者:
古银平
时间:
2012-7-24 18:06
changePlace2中你只传递了两个形式参数,根本没有数组,怎么交换数组的元素呢,形参和实参,在changePlace2中是交换了两个形参,你没有传递数组,那么只是两个变量的交换,与数组没关系。
作者:
王志明
时间:
2012-7-24 18:08
changePlace(int[]arr,int a,int b)中参数arr是引用传递
但changePlace2(int a,int b)中参数都值传递
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2