java 交换数组中的两个数。 10

classTes4{publicstaticvoidmain(String[]args){int[]arr={2,1,45,6};Arr.sortMax(arr);Arr... class Tes4
{
public static void main(String[] args)
{
int [] arr={2,1,45,6};
Arr.sortMax(arr);
Arr.printArr(arr);

}
}

class Arr
{
public static void sortMax(int [] arr)
{
int temp;
for(int x=0;x<arr.length;x++)
{
for(int y=x;y<arr.length;y++)
{
if(arr[x]<arr[y])
{

swap(arr[x],arr[y]);
}
}
}
}

// 交换两个数
private static void swap(int a,int b)
{
int temp;
temp = a;
a = b;
b = temp;
}

//打印数组
public static void printArr(int [] arr)
{
for(int x=0;x<arr.length-1;x++)
{
System.out.print(arr[x]+" ");
}
System.out.println(arr[arr.length-1]);
}

}

上边交换两个数如果用
private static void swap(int [] arr,int a,int b)
{

arr[a]=arr[a]+arr[b];
arr[b]=arr[a]-arr[b];
arr[a]=arr[a]-arr[b];

}
排序就正常。为什么(int a ,intb)排序结果不对?
展开
 我来答
yugi111
2014-05-10 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
这个方法,里面都没有用到数组,可见是个值传递,局部可见

private static void swap(int a,int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
追问


实验结果:

能细一点帮我讲下么。。谢谢了。我是菜鸟 - -嘿嘿。

追答
我也讲不清楚啊,记住直接操作数组,就是引用传递,如果间接的通过其他变量,非数组的变量来交换的话,就是值传递,我只是强行记住了而已

你那个测试的,还是局部的间接非数组变量交换,所以不会影响数组本身,你下面的那个方法可以,就是因为直接用数组操作的
匿名用户
2017-07-18
展开全部
简单类型,不可以返回的。

~
~
~
~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
REXrex9
2017-06-26 · TA获得超过3332个赞
知道大有可为答主
回答量:1814
采纳率:63%
帮助的人:625万
展开全部
t=a[0];
a[0]=a[1];
a[1]=t;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式