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进行插入排序 ...
随机推荐
- Unity3D游戏,TCP,WEBCOSKT,HTTP通信架构 weaving-socket
weaving-socket 详细介绍 项目简介 2017-8-8:新发布功能 增加U3D游戏客户的通讯项目支持,并提供示例内容. 2017-5-5: 新发布 weaving-socket 架构的.n ...
- 如何装载Storyboard中的ViewController?
如上图所示,如何装载Storyboard中指定的ViewController? 首先,需要指定ViewController的ID,如上图右上方红色方框内的Storyboard ID.然后使用下面的 ...
- python 统计文件的个数
import os path = r'F:\1back\picture' #获取当前路径 count = 0 for root,dirs,files in os.walk(path): #遍历统计 i ...
- astgo经常死机变慢?试试mysql数据碎片整理吧
使用SSH之类的工具或navicat链接数据库后(注意:是链接数据库后哦,不是直接SSH后就弄,这样提示命令错误的) 执行下面命令(目的是对ASTGO的数据库内除话单之外的所有表进行数据碎片整理,特别 ...
- bzoj 1664: [Usaco2006 Open]County Fair Events 参加节日庆祝【dp+树状数组】
把长度转成右端点,按右端点排升序,f[i]=max(f[j]&&r[j]<l[i]),因为r是有序的,所以可以直接二分出能转移的区间(1,w),然后用树状数组维护区间f的max, ...
- BEM --Yandex的CSS 命名方法论
人们问我最多的问题之一是在CSS类名中--和__是什么意思?它们的出现是源于BEM和Nicolas Gallagher... BEM的意思就是块(block).元素(element).修饰符(modi ...
- crosswalk 初步使用
这里简单的说下 crossWalk 的配置; 我在学习 crosswalk 的时候,看到一篇博客,他所记录的已经是很完整的教程了: 点击查看 本文就根据该博客和官网说明,进行部分修改,补充; 首先 c ...
- Kafka详解与总结(七)-Kafka producer拦截器(interceptor)
1. 拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑. 对于producer而言,interceptor ...
- 1619. [HEOI2012]采花
1619. [HEOI2012]采花 ★★☆ 输入文件:1flower.in 输出文件:1flower.out 简单对比 时间限制:5 s 内存限制:128 MB [题目描述] 萧薰儿 ...
- 本地编译全志R系列的步骤(Ubuntu16.04.4版本)
本地编译全志R系列的步骤(Ubuntu16.04.4版本) 2018/6/14 9:32 版本:V1.0 0.获取全志R系列的Android源码包: 请通过渠道/代理商/方案公司获取全志R系列的And ...