A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马东华 初级黑马   /  2012-4-21 21:37  /  1853 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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("]");
}
}
这个程序运行的结果数组根本就没有进行排序,求解释,谢谢


3 个回复

倒序浏览
你只是向方法中传了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;
}

评分

参与人数 1黑马币 +10 收起 理由
马东华 + 10 赞一个!

查看全部评分

回复 使用道具 举报
chenwei 发表于 2012-4-21 21:48
你只是向方法中传了2个值a,b 然后把a和b2个值互换,对数组毫影响
exchange(arr,x,y);   //把数组和所需要替 ...

谢谢,知道了,原来如此。
回复 使用道具 举报
chenwei 发表于 2012-4-21 21:48
你只是向方法中传了2个值a,b 然后把a和b2个值互换,对数组毫影响
exchange(arr,x,y);   //把数组和所需要替 ...

谢谢,知道了,原来如此
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马