Java中的Arrays.sort()方法默认将数组元素从大到小排序. 要实现从大到小排序java也提供了一种方法:
Arrays中的sort(T[] a, Comparator<?super T> c),
但是传入的数组类型不能是基本类型(int char double),只能使用对应的类(Integer),因为Comparator接口中的
compare()方法默认从小到大排序,我们只需要重写这个方法就行了.下面是测试demo。
package main;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n;
Integer a[] = new Integer [110];
n = in.nextInt();
for (int i = 0; i < n; i++) {
a[i] = in.nextInt();
}
Comparator<Integer> cmp = new MyComarator();
Arrays.sort(a, 0, n, cmp);
for (int i = 0; i < n; i++) {
System.out.print(a[i] + " ");
}
in.close();
}
}
class MyComarator implements Comparator<Integer> {
@Override
public int compare(Integer a, Integer b) {
if (a < b)
return 1;
else if (a > b)
return -1;
else
return 0;
}
}
大数版
package main;
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n;
BigInteger a[] = new BigInteger [110];
n = in.nextInt();
for (int i = 0; i < n; i++) {
a[i] = in.nextBigInteger();
}
Comparator<BigInteger> cmp = new MyComarator();
Arrays.sort(a, 0, n, cmp);
for (int i = 0; i < n; i++) {
System.out.print(a[i] + " ");
}
in.close();
}
}
class MyComarator implements Comparator<BigInteger> {
@Override
public int compare(BigInteger a, BigInteger b) {
if (a.compareTo(b) == -1)
return 1;
else if (a.compareTo(b) == 1)
return -1;
else
return 0;
}
}