CCF201503-2 数字排序 java(100分)
| 试题编号: | 201503-2 |
| 试题名称: | 数字排序 |
| 时间限制: | 1.0s |
| 内存限制: | 256.0MB |
| 问题描述: |
问题描述
给定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的非负整数。
|
问题描述:给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
package test; import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner; public class b_07 { public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int a[]=new int[n];
Map map=new HashMap();
for(int i=0;i<n;i++){
a[i]=in.nextInt();
map.put(a[i], i);
} int size=map.size();//查看有多少个不重复的数字,使用hashmap
int ans[][]=new int[size][2];
int result=0;
Arrays.sort(a);
for(int i=n-1;i>=0;i--){
int count=1;
if(i==0){
if(a[i]!=a[i+1]){
//
ans[result][0]=a[i];
ans[result][1]=count;
result++;
}
break;
}
while(a[i]==a[i-1]){ count++;
i=i-1;
if(i==0)break ;
} //
ans[result][0]=a[i];
ans[result][1]=count;
result++;
} int temp1=0;
int temp2=0;
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
if(ans[i][1]>ans[j][1]){
temp1=ans[i][0];
temp2=ans[i][1];
ans[i][0]=ans[j][0];
ans[i][1]=ans[j][1];
ans[j][0]=temp1;
ans[j][1]=temp2;
}
}
} // for(int i=size-1;i>=0;i--){
// int count2=1;
// if(i==0){
// if(ans[i][1]!=ans[i+1][1]){
//
//// ans[result][0]=a[i];
//// ans[result][1]=count;
//// result++;
// count2=1;
// }
// break;
// }
// while(ans[i][1]==ans[i-1][1]){
//
// count2++;
// i=i-1;
// if(i==0)break ;
// }
//
// System.out.println(ans[i][0]+":"+count2);
//
//// ans[result][0]=a[i];
//// ans[result][1]=count;
//// result++;
//
// if(count2>1){
// int temp3=0;
//
// for(int k=i+count2-1;k>=i;k--){
// for(int j=i+count2-1;j>=i;j--){
// if(ans[k][0]<ans[j][0]){
// temp1=ans[i][0];
//
// ans[i][0]=ans[j][0];
//
// ans[j][0]=temp1;
//
// }
// }
// }
// }
// }
for(int i=0;i<size;i++){
for(int j=0;j<2;j++){
if(ans[i][j] != 0){
System.out.print(ans[i][j]+" ");
} }
System.out.println();
}
int same = 1;
int sameTemp = 0;
int sameChange = 0;
for(int i=0;i<map.size()-1;i++){ //比较的时候如果是逐一比较则不需要 if(ans[i][1] == ans[i+1][1]){
same ++;
}else{
same = 1;
}
System.out.println("Same:"+same);
if(same > 1){
sameTemp = 0;
while( sameTemp != same-1){ if(ans[i-sameTemp][0] > ans[i+1-sameTemp][0]){
sameChange = ans[i-sameTemp][0];
ans[i-sameTemp][0] = ans[i+1-sameTemp][0];
ans[i+1-sameTemp][0] = sameChange;
}
sameTemp ++;
}
}
}
for(int i=0;i<size;i++){
for(int j=0;j<2;j++){
if(ans[i][j] != 0){
System.out.print(ans[i][j]+" ");
} }
System.out.println();
} } }
CCF201503-2 数字排序 java(100分)的更多相关文章
- 201503-2 数字排序 Java
思路: 将出现过的数以及次数放进Map中,转成List,用Comparator就可以排序了.参数中o2-o1,与排序规则相反,为降序 import java.util.ArrayList; impor ...
- 基于Hadoop 2.6.0运行数字排序的计算
上个博客写了Hadoop2.6.0的环境部署,下面写一个简单的基于数字排序的小程序,真正实现分布式的计算,原理就是对多个文件中的数字进行排序,每个文件中每个数字占一行,排序原理是按行读取后分块进行排序 ...
- B1019 数字黑洞 (20分)
B1019 数字黑洞 (20分) 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复 ...
- 初识指令重排序,Java 中的锁
本文是作者原创,版权归作者所有.若要转载,请注明出处.本文只贴我觉得比较重要的源码 指令重排序 Java语言规范JVM线程内部维持顺序化语义,即只要程序的最终结果与它顺序化情况的结果相等,那么指令的执 ...
- CCF系列之数字排序(201503-2)
问题描述试题编号: 201503-2试题名称: 数字排序时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...
- 算法练习5---快速排序Java版
基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成 ...
- sort排序,按指定字段进去重,sort -t "^" -k 8 -su,ls给文件名中数字排序sort -k1.5n,Tab符要转义
sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...
- 2020.01.19【NOIP提高组】模拟比赛-1.水池,2.数字排序,3.球星,4.钻石交易 总结反思
水池 比赛时 我最讨厌这种数学类题了,我首先想到了这几种情况,设\(jl[][]\)表示两点之间弧的距离,从F到G可以由 F->G F->B->A->G F->A-> ...
- 希尔排序及希尔排序java代码
原文链接:http://www.orlion.ga/193/ 由上图可看到希尔排序先约定一个间隔(图中是4),然后对0.4.8这个三个位置的数据进行插入排序,然后向右移一位对位置1.5.9进行插入排序 ...
随机推荐
- flask核心对象Flask实例初探
flask的核心程序就两个: werkzegu(WSGI)库,封装了http.web通信等最关键的wsgi功能②Jinja2是Python下一个被广泛应用的模版引擎,方便了html模板的创建和使用 而 ...
- 逻辑频道号---DVB NIT LCN
先介绍NIT,NIT描述如下: 有一点要注意,NIT是对大网的描述,即NIT并不是描述当前的流,而是描述大网的某些或者全部流.如下图,TS流描述1-6共对6个频点不同的TS流进行了描述,具体对哪一个流 ...
- LVS集群体系和调度算法
集群体系和调度算法 LVS集群体系架构 1)使用LVS架设的服务器集群系统有三个部分组成: 最前端的负载均衡层,用Load Balancer表示, 中间的服务器群组层,用Server Array表示, ...
- bzoj 1715: [Usaco2006 Dec]Wormholes 虫洞【spfa判负环】
tag是假的,用了及其诡异的方法判负环 正权无向边和负权有向边的图 #include<iostream> #include<cstdio> #include<cstrin ...
- [Swift]通天遁地Swift
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- JAVA POI的使用
最近开发遇到了要通过Java处理Excel文件的场景,于是乎在网上了解了一番,最后自己做了个demo,已上传gitee:https://gitee.com/github-26930945/JavaCo ...
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Train Seats Reservation
You are given a list of train stations, say from the station 11 to the station 100100. The passenger ...
- 构造 Codeforces Round #275 (Div. 2) C. Diverse Permutation
题目传送门 /* 构造:首先先选好k个不同的值,从1到k,按要求把数字放好,其余的随便放.因为是绝对差值,从n开始一下一上, 这样保证不会超出边界并且以防其余的数相邻绝对值差>k */ /*** ...
- 解决:org.springframework.tuple.spel.TuplePropertyAccessor
原来运行调试正常的项目,今天启动时报“java.lang.IllegalStateException: ApplicationEventMulticaster not initialized”错误.从 ...
- 获取Sprite上某一个点的透明度
转载[ http://www.cnblogs.com/Androider123/p/3795050.html] 本篇文章主要讲一下怎么做一个不规则的按钮,比如如下图的八卦,点击绿色和点击红色部分,需要 ...