java编程选择排序时用swap(arr[i],arr[j])为什么不能对数组的元素进行互换?

选择排序有2层for循环,第2层for循环的循环体是if语句,进行数组内2个元素的互换。for(inti=0;i<arr.length-1;i++){for(intj=i... 选择排序有2层for循环,第2层for循环的循环体是if语句,进行数组内2个元素的互换。
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int t=arr[i]; ////
arr[i]=arr[j]; //我把这部分用swap函数代替
arr[j]=t; ////
}
}
}
第一次swap是这样定义的
... void swap(int a,int b){int t=a;a=b;b=t;}
在第2层for循环里这样调用: if(arr[i]>arr[j]) swap(arr[i],arr[j]); 可是运行结果显示还是原数组。
第二次swap是这样定义的
... void swap(int arr[],int a,int b){int t=arr[a];arr[a]=arr[b];arr[b]=t;}
在第2层for循环里这样调用:
if(arr[i]>arr[j]) swap(arr,i,j); 这样运行结果就合适了。
感觉这两种swap()都是对数组元素进行互换,可第一个为啥没换过来呢?求大神给我讲解一下,谢谢了
展开
 我来答
百度网友2ffcc44
2016-05-11 · TA获得超过183个赞
知道小有建树答主
回答量:182
采纳率:100%
帮助的人:138万
展开全部
java中方法传递参数,如果是基本类型,那么传递的是数值,如果是引用类型,则传递内存地址,你的第二个方法就是把数组作为参数,就是把数组的内存地址传递过去,这样就是修改内存地址上的值,是会反应到原有数组上的。你需要看下引用类型和基础类型的区别这方面的知识
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式