跪求一个Java排序问题 int[] a = {4, 2, 7, -1, 0, 3, 0};设计一个方法,排序后的数组是{-1, 2, 3, 4, 7, 0, 0}就是一般升序排序,但是有区别的是0要放在数组的最后我搞了半天没有搞出来啊。雪地里跪求,在线等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一种方法:排序前~~将0换成一个很大的数字,例如是Integer.MAX_VALUE。而后正常排序。排序后将Integer.MAX_VALUE换成0.可能出现的混淆就是数组中原本就有Integer.MAX_VALUE,需额外判断第二种方法:截取数组,将所有为0的放在新开辟的数组空间。然后对不含0的数组正常排序。最后将缓存的那些0全部追加到已排序的数组最后。 需要消耗额外的空间,时间 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));楼主只要在算法里面类似这样的处理就好了 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] 求一个使用GridBagLayout布局表单案例 hibernate配置问题 java怎样计算一个String类型的数学表达式? 网络编程的高手来帮个忙 替换字符问题,如果将"\" 替换程"\\"或"/" ???(急) 转贴,我也遇到的问题.Jdk1.4.1新的焦点控制系统的问题? 请问一般JAVA BEAN的开发过程是怎样的?(100分,在现等待,马上送) 有好的java技术网站吗?各位大侠介绍一下,谢谢,真的好,我一定给分. 网站难题 如何用字符串"20001212"得到一个日期对象? 从list取值,急!! StylePad熟悉的或者JAVA高手请进
排序前~~将0换成一个很大的数字,例如是Integer.MAX_VALUE。而后正常排序。排序后将Integer.MAX_VALUE换成0.可能出现的混淆就是数组中原本就有Integer.MAX_VALUE,需额外判断
第二种方法:
截取数组,将所有为0的放在新开辟的数组空间。然后对不含0的数组正常排序。最后将缓存的那些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));楼主只要在算法里面类似这样的处理就好了
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]