黑马程序员技术交流社区
标题:
互换位置出现的问题
[打印本页]
作者:
马东华
时间:
2012-4-21 21:37
标题:
互换位置出现的问题
public class SequenceDemo {
public static void main(String[] args) {
int[] arr={3,2,7,8,34,36};
printArray(arr);
selectSort(arr);
System.out.println("");
printArray(arr);
}
public static void selectSort(int[] arr){
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++ )
{
if(arr[x]>arr[y]){
int temp=arr[y];
arr[y]=arr[x];
arr[x]=temp;
}
}
}
}
这个程序可以正常运行,但是当我把 int temp=arr[y];
arr[y]=arr[x];
arr[x]=temp; 给封装成函数时,为什么就不错结果呢,代码如下
:
package cn.itcast;
public class SequenceDemo {
public static void main(String[] args) {
int[] arr={3,2,7,8,34,36};
printArray(arr);
selectSort(arr);
System.out.println("");
printArray(arr);
}
public static void selectSort(int[] arr){
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++ )
{
if(arr[x]>arr[y]){
exchange(arr[x],arr[y]);
}
}
}
}
public static void exchange(int a,int b){
int temp=a;
a=b;
b=temp;
}
public static void printArray(int[] arr){
System.out.print("[");
for(int i=0;i<arr.length;i++){
if(i!=arr.length-1){
System.out.print(arr[i]+",");
}
else
System.out.print(arr[i]);
}
System.out.print("]");
}
}
这个程序运行的结果数组根本就没有进行排序,求解释,谢谢
作者:
chenwei
时间:
2012-4-21 21:48
你只是向方法中传了2个值a,b 然后把a和b2个值互换,对数组毫影响
exchange(arr,x,y); //把数组和所需要替换的2个索引传入
public static void exchange(int [] arr,int a,int b){ //接受数组和索引,再替换
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
作者:
马东华
时间:
2012-4-21 21:59
chenwei 发表于 2012-4-21 21:48
你只是向方法中传了2个值a,b 然后把a和b2个值互换,对数组毫影响
exchange(arr,x,y); //把数组和所需要替 ...
谢谢,知道了,原来如此。
作者:
马东华
时间:
2012-4-21 21:59
chenwei 发表于 2012-4-21 21:48
你只是向方法中传了2个值a,b 然后把a和b2个值互换,对数组毫影响
exchange(arr,x,y); //把数组和所需要替 ...
谢谢,知道了,原来如此
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2