int[] a = {4, 2, 7, -1, 0, 3, 0};
设计一个方法,排序后的数组是{-1, 2, 3, 4, 7, 0, 0}就是一般升序排序,但是有区别的是0要放在数组的最后我搞了半天没有搞出来啊。雪地里跪求,在线等

解决方案 »

  1.   

    第一种方法:
    排序前~~将0换成一个很大的数字,例如是Integer.MAX_VALUE。而后正常排序。排序后将Integer.MAX_VALUE换成0.可能出现的混淆就是数组中原本就有Integer.MAX_VALUE,需额外判断
    第二种方法:
    截取数组,将所有为0的放在新开辟的数组空间。然后对不含0的数组正常排序。最后将缓存的那些0全部追加到已排序的数组最后。
     需要消耗额外的空间,时间
      

  2.   

    Integer[] array = {4, 2, 7, -1, 0, 3, 0};
    Arrays.sort(array, new Comparator<Integer>(){
    public int compare(Integer i1, Integer i2){
    if(i1==0)
    return 1;
    if(i2==0)
    return -1;

    return i1>i2 == true ? 1 : (i1==i2 ? 0 : -1);
    }
    });
    System.out.println(Arrays.toString(array));楼主只要在算法里面类似这样的处理就好了
      

  3.   


    public static void main(String[] args) {
    Integer[] a = {4, 2, 7, -1, 0, 3, 0}; 
    Arrays.sort(a, new Comparator<Integer>(){
    public int compare(Integer o1, Integer o2) {
    if (o1 == 0) {
    return 1;
    }
    if (o2 == 0) {
    return -1;
    }
    return o1.compareTo(o2);

    }
    });
    System.out.println(Arrays.toString(a));
    }[-1, 2, 3, 4, 7, 0, 0]