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()都是对数组元素进行互换,可第一个为啥没换过来呢?求大神给我讲解一下,谢谢了 展开
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()都是对数组元素进行互换,可第一个为啥没换过来呢?求大神给我讲解一下,谢谢了 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |