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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 18643448863 中级黑马   /  2014-10-9 07:48  /  2804 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 18643448863 于 2014-10-9 10:17 编辑
  1. class maoPao
  2. {
  3.         public static void weizhi(int a, int b)

  4.         {
  5.                
  6.                                 int z=a;
  7.                                 a=b;
  8.                                 b=z;
  9.                         
  10.         }
  11.         public static void maopao(int[] arr)
  12.                 {for(int x=0;x<arr.length;x++)
  13.                         {
  14.                         for(int y=0;y<arr.length-x-1;y++)
  15.                                 {
  16.                                         if(arr[y]>arr[y+1])
  17.                                         weizhi(arr[y],arr[y+1]);//现在这个位置我是把两个数组中的数放进去进行换位置,为什么就排序不了,把角标和                                                                                        // 数组穿进去,置换位置能换 为什么?
  18.                                 }
  19.                         }
  20.                 }
  21.                 public static void main(String[] args)

  22.                 {int [] arr={7,1,6,4,2,8,3};
  23.                 maopao(arr);
  24.                 paixudayin(arr);}


  25.                 public static void paixudayin(int[] arr)
  26.                 {
  27.                 System.out.print("[");
  28.                         for(int x=0;x<arr.length;x++)
  29.                         {        if(x!=arr.length-1)
  30.                                 System.out.print(arr[x]+",");
  31.                                         else
  32.                                         System.out.print(arr[x]+"]");}
  33.                         }                                
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

20 个回复

倒序浏览
  if(arr[y]>arr[y+1])                                         weizhi(arr[y],arr[y+1]);//现在这个位置我是把两个数组中的数放进去进行换位置,为什么就排序不了,把角标和                                                                                        // 数组穿进去,置换位置能换 为什么?因为你这么做只是把两个整数换位而没有注明他是属于那个数组的。
回复 使用道具 举报
补充一下你这么做相当于 吧  int a = 4; int b = 5; 编程了int a = 5; int b = 4; 而这俩数是哪的并不明确,所以换位失败了。
回复 使用道具 举报
LZ,你在置换位置的那个函数里面,没有定义数组  public static void weizhi(int []arr,int a, int b)  这里应该是写成这样子,不然你下面传的是数组的数,没法置换。所以才会输出的是原数组。
还有LZ  你可以去把标示符那部分再看一下。。。表示你这命名有点问题。。。。嘿嘿。。
回复 使用道具 举报
lz你把两个数组值传到函数maomo里面,只是在函数内部交换了下两个值,在输出时,实际了没有变化。  我觉得你要是想用函数应该把两个for循环以及交换位置也封装到函数里面,你可以参考下
回复 使用道具 举报
所谓的参数按值传递
回复 使用道具 举报
wf111sxwf 发表于 2014-10-9 08:56
if(arr[y]>arr[y+1])                                         weizhi(arr[y],arr[y+1]);//现在这个位置 ...

你的意思是要把数组也穿进去么? 我表示 我穿了数组进去一样不能置换
回复 使用道具 举报
MR.Sun 发表于 2014-10-9 09:00
LZ,你在置换位置的那个函数里面,没有定义数组  public static void weizhi(int []arr,int a, int b)  这 ...

就算穿了数组进去也不行。因为两个数置换了 但是数组中却没有变化 在weizi这个函数中 传的数组和 俩个数实际上没有关系。数组本身的元素一直都没变化。有你的思路我才明白。
回复 使用道具 举报
我的意思是你的weizhi这个功能写的不对,这个功能没有和这个数组发生任何关系,只是单纯的吧数值进行了转变。
回复 使用道具 举报
你想用函数换位必须在函数的参数里接收一个数组,才能对该数组中的元素进行操作。你这个功能都没有接受数组咋对数组元素进行换位啊。
回复 使用道具 举报
18643448863 发表于 2014-10-9 10:14
就算穿了数组进去也不行。因为两个数置换了 但是数组中却没有变化 在weizi这个函数中 传的数组和 俩个数 ...

位置置换是在数组置换的,可是你数组都没有,怎么置换?对吧。
回复 使用道具 举报
MR.Sun 发表于 2014-10-9 11:03
位置置换是在数组置换的,可是你数组都没有,怎么置换?对吧。

就算传了数组也置换不了的。你试试看就知道了,呵呵 如果传了数组就能置换了,我也就不会问这个问题了。就是以为传了数组也至换不了,所以我才问为什么至换不了的。
回复 使用道具 举报
wf111sxwf 发表于 2014-10-9 10:53
你想用函数换位必须在函数的参数里接收一个数组,才能对该数组中的元素进行操作。你这个功能都没有接受数组 ...

你试试看就知道了 就算定义了 weizi(int arr[],int a ,int b)传进去一样不行。传不传数组这种都不行。A和B 只是两个树之间置换了,没有和传入的数组产生任何关系,怎么传 怎么换位置 该数组还是该数组没变
回复 使用道具 举报
int a 和arr有关系么?int b和arr有关系么?
回复 使用道具 举报
我写错了抱歉
回复 使用道具 举报
你直接接收arr 但是函数的算法里面你没有声明arr和int a int b的关系,a是数组的角标?还是什么,他们之间有什么关系。写函数参数列表没有明确,你这个换位功能有几个未知变量?3个。数组,和要换位置的两个元素。int a你这个a在你的算法里有没和arr发生关系 如何对arr中的元素进行操作?
回复 使用道具 举报
dsh 中级黑马 2014-10-9 12:10:38
17#
楼主你的问题  关键在于你的weizhi方法的问题,   weizhi(arr[y],arr[y+1]);    这个地方的实参与形参的问题  你在仔细研究,   你没有对位置进行转换,
回复 使用道具 举报
public static void weizhi(int[]arr,int a, int b)

        {
               
                                int z=arr[a];
                                arr[a]=arr[b];
                               arr[ b]=z;
                        
        }
回复 使用道具 举报
dsh 发表于 2014-10-9 12:10
楼主你的问题  关键在于你的weizhi方法的问题,   weizhi(arr[y],arr[y+1]);    这个地方的实参与形参的问题 ...

嗯 我知道了,也明白了 穿了两个树虽然置换了 但是和数组无关 想要对数组元素进行置换,要和传入的数组产生关系才行。取传入数组的元素进行互换才行,对不对啊?
回复 使用道具 举报
dsh 中级黑马 2014-10-9 12:29:54
20#
对  是的  一直是吧两个数组的值传过去    然后那边把两个值置换后,   这边的数组还是没有置换
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马