试题编号: | 201503-2 |
试题名称: | 数字排序 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。 输入格式 输入的第一行包含一个整数n,表示给定数字的个数。 输出格式 输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。 样例输入 12 样例输出 3 4 评测用例规模与约定 1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。 |
代码:
package ccf;
import java.util.Scanner;
public class 数字排序 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new 数字排序().run();
}
public void run(){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[n];
for (int i=0; i<a.length;i++) {
a[i]=sc.nextInt();
}
int[] b=new int [1001];
for (int i=0;i<a.length;i++) {
b[a[i]]++;
}
int z;
int z1;
int c[]=new int [1001];
for (int i = 0; i <1001; i++) {
c[i]=i;
}
for (int i=0; i<1001; i++) {
for (int j=i+1; j<1001; j++) {
if(b[j]>b[i]){
z=b[i];
b[i]=b[j];
b[j]=z;
z1=c[i];
c[i]=c[j];
c[j]=z1;
}
if(b[j]==b[i]&&c[j]<c[i]){
z=b[i];
b[i]=b[j];
b[j]=z;
z1=c[i];
c[i]=c[j];
c[j]=z1;
}
}
}
for (int i=0;i<1001;i++) {
if(b[i]>0){
System.out.println(c[i]+" "+b[i]);
}
}
sc.close();
}}
阿里云服务器,拼团特惠价86一年,有兴趣的小伙伴可以了解一下:https://www.aliyun.com/1111/2019/group-buying-share?ptCode=68E176AAA4B1148EC82F42C7F69B54F8647C88CF896EF535&userCode=cd601crm&share_source=copy_link