Java大数类排序

来源:互联网 发布:jsp与javascript的区别 编辑:程序博客网 时间:2024/06/06 07:47

大数类排序

import java.lang.reflect.Array;import java.math.BigDecimal;import java.math.BigInteger;import java.util.*;public class Main {public static void main(String[] args) {Scanner cin=new Scanner(System.in);BigInteger a[]={BigInteger.valueOf(5), BigInteger.valueOf(5), BigInteger.valueOf(7), BigInteger.valueOf(2), BigInteger.valueOf(0)};Comparator cmp = new MyComparator();Arrays.sort(a, cmp);System.out.println(Arrays.toString(a));}static class MyComparator implements Comparator<BigInteger>//从大到小排序{@Overridepublic int compare(BigInteger o1, BigInteger o2) {if(o1.compareTo(o2)<=0)return 1;else if(o1.compareTo(o2)==0)return 0;elsereturn -1;}}}


int型排序

import java.lang.reflect.Array;import java.math.BigDecimal;import java.math.BigInteger;import java.util.*;public class Main {public static void main(String[] args) {//注意,要想改变默认的排列顺序,不能使用基本类型(int,double, char)Integer [] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};Comparator cmp = new MyComparator();Arrays.sort(a, cmp);for(int i = 0; i < a.length; i ++) {System.out.print(a[i] + " ");}}static class MyComparator implements Comparator<Integer>{@Overridepublic int compare(Integer o1, Integer o2) {         //如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值,         //这样颠倒一下,就可以实现反向排序了         if(o1 < o2) {              return 1;         }else if(o1 > o2) {             return -1;         }else {             return 0;         }}}}


double型

import java.lang.reflect.Array;import java.math.BigDecimal;import java.math.BigInteger;import java.util.*;public class Main {public static void main(String[] args) {//注意,要想改变默认的排列顺序,不能使用基本类型(int,double, char)Double [] a = {9.5, 8.1, 7.4, 2.0, 3.02, 4.16, 1.01, 0.0, 6.1, 5.5};Comparator cmp = new MyComparator();Arrays.sort(a, cmp);for(int i = 0; i < a.length; i ++) {System.out.print(a[i] + " ");}}static class MyComparator implements Comparator{@Overridepublic int compare(Object  o1, Object  o2) {         //如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值,         //这样颠倒一下,就可以实现反向排序了double t1=(double)o1;double t2=(double)o2;         if(t1 < t2) {              return 1;         }else if(t1 > t2) {             return -1;         }else {             return 0;         }}}}