黑马程序员技术交流社区
标题:
基础的小问题
[打印本页]
作者:
7jianpan
时间:
2014-7-22 21:44
标题:
基础的小问题
为什么这样写输出没有排序
public static void arraySort1(int[] arr)
{
for (int i=0; i<arr.length-1;i++ )
{
for (int j=0;j<arr.length-i-1 ;j++ )//-x让每一次参与比较的角标减少,-1避免越界
{
if (arr[j]>arr[j+1])
{
swap(arr[j],arr[j+1]);
}
}
}
}
public static void swap(int a,int b)// 这个是错的,正确的应该是:public static void swap(int[] arr,int a,int b){ int temp=arr[a]; arr[a]=arr[b]; arr[b]=arr[a];} 上方对应的语句应该是,swap(arr,j,j+1);,我想知道这个为什么不行。
{
int temp=a;
a=b;
b=temp;
}
作者:
7jianpan
时间:
2014-7-22 21:46
正确的
public static void swap(int[] arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=arr[a];
}
想知道上面错的为什么错
作者:
HPU--spring87
时间:
2014-7-22 21:58
第一个看不懂,很乱,你不就想交换数组吗?那就遍历跟int a,b;交换一样,需要一个中间变量。
作者:
杨冬冬
时间:
2014-7-22 22:56
正确的应该是
public static void swap(int[] arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
作者:
star5603
时间:
2014-7-22 23:44
错的方案:
你只是把数组的两个元素传进去,当做普通的两个int数值a和b传进去,函数只是对两个传入的两个数进行了置换。
但是,没和你的数组产生任何联系,自然不会对数组的元素进行置换。所以,对的那种有角标联系,就能置换。
作者:
止询初衷
时间:
2014-7-22 23:59
。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2