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

选择排序有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()都是对数组元素进行互换,可第一个为啥没换过来呢?求大神给我讲解一下,谢谢了

java中方法传递参数,如果是基本类型,那么传递的是数值,如果是引用类型,则传递内存地址,你的第二个方法就是把数组作为参数,就是把数组的内存地址传递过去,这样就是修改内存地址上的值,是会反应到原有数组上的。你需要看下引用类型和基础类型的区别这方面的知识
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答