排序均衡和赔率

时间:2014-11-05 05:40:17

标签: java arrays

修改参数数组,使其仍包含与给定数组完全相同的数字,但重新排列,以便所有偶数都在所有奇数之前。除此之外,数字可以是任何顺序。您必须通过更改方法evensLeft中的数组来修改数组参数。该数组可以为空或只有一个元素。在这两种情况下,都不应该做出任何改变。

public void evensLeft(int[] array){
      int j = array.length-1;
      int h = 0;
      int[] newArray=array;
      for (int k = 0; k < newArray.length; k++) {
        if(newArray[k]%2==0){
            array[h]=newArray[k];
            h++;
        }else{
            array[j]=newArray[k];
            j--;
        }
    }
  }

我的测试没有通过,我似乎无法弄清楚出了什么问题。

3 个答案:

答案 0 :(得分:1)

问题在于行int[] newArray=array;

您应该将array复制到newArray,但int[] newArray=array;只是让newArray引用array引用的整数数组。

将代码更改为int[] newArray=array.clone();以复制整数数组,然后它应该可以正常工作。

答案 1 :(得分:0)

复制链接到数组,没有任何意义,因为您仍将修改原始数组

   int[] newArray=array;

使用

   java.util.Arrays.copyOf(array, array.length)

答案 2 :(得分:0)

我尝试使用Comparator。

Set<Integer> ts=new TreeSet<Integer>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                if(o1%2==0){

                    if(o2%2==0){
                        return -1;
                    }
                    return -1;
                }else if(o2%2==0){
                    return 1;
                }
                return 1;
            }
        });
        ts.addAll(Arrays.asList(new Integer[]{2,1,5,7,8,3}));


        System.out.println(ts);

<强>输出:

[8,2,1,5,7,3]