import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
/**
*
问题描述
给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
输入格式
输入的第一行包含一个整数n,表示给定数字的个数。
第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
输出格式
输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。
样例输入
12
5 2 3 3 1 3 4 2 5 2 3 5
样例输出
3 4
2 3
5 3
1 1
4 1
评测用例规模与约定
1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。
* @author Administrator
*
*/
public class NumSort {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] num = new int[1001];
int temp = 0;
for (int i = 0; i < n; i++) {
temp = sc.nextInt();
num[temp] = num[temp] + 1;
}
List<Number> list = new ArrayList<Number>();
for (int i = 0; i < num.length; i++) {
if (num[i] != 0) {
list.add(new Number(i, num[i]));
}
}
Comparator<Number> com = new Comparator<Number>() {
public int compare(Number o1, Number o2) {
return (int) (o2.getCount() - o1.getCount());
}
};
Collections.sort(list, com);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
class Number {
private int num;
private int count;
public Number(int num, int count) {
super();
this.num = num;
this.count = count;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
@Override
public String toString() {
return num + " " + count;
}
}
CCF试题Java-数字排序
猜你喜欢
转载自blog.csdn.net/kidchildcsdn/article/details/81067057
今日推荐
周排行