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进行插入排序 ...
随机推荐
- 洛谷 P1351 联合权值 —— 树形DP
题目:https://www.luogu.org/problemnew/show/P1351 树形DP,别忘了子树之间的情况(拐一下距离为2). 代码如下: #include<iostream& ...
- Python基础第六天
一.内容 二.练习 练习1 题目:文件的增删改查 图示: 代码: import os def add(data): content = data[1] # 文件内容 file_name = data[ ...
- [odb-users] query results not being cached?
Burton, Craig crburton at tnsi.comWed Jun 6 13:58:03 EDT 2012 Previous message: [odb-users] query re ...
- Spring MVC标签<mvc: annotation-driven />小结 原
转自:https://my.oschina.net/u/1156626/blog/881483 mvc:annotation-driven的作用 Spring 3.0.x中使用了mvc:annotat ...
- Postman发送GET请求带中文
当使用Postman进行GET请求,并且请求参数里携带中文得时候,会请求失败 这时,需要对GET请求参数携带的中文进行编码即可请求成功
- bzoj 1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪【枚举】
4维枚举平方小于10000的数,相加等于n则ans++ #include<iostream> #include<cstdio> using namespace std; con ...
- Linux day01(二)虚拟机快照和克隆的用法介绍
一:快照 优点:运行虚拟机后不用担心系统会被弄崩溃了,点击快照会立即恢复到初始状态 缺点:回滚会带来数据的丢失,所以要考虑数据恢复的成本和找回数据时进行操作的成本 1. 在导航栏中找虚拟机快照的小图标 ...
- Java中的抽象类详解,它存在的意义在哪里?
学习抽象类前先理解下面这段话: 问你个问题,你知道什么是"东西"吗?什么是"物体"吗? "麻烦你,小王.帮我把那个东西拿过来好吗" 在生活中 ...
- Linux学习系列八:操作网口
一些相对高性能的单片机会带以太网接口,网口在MCU里算是比较复杂的外设了,因为它涉及到网络协议栈,通常情况下网络协议栈会运行在一个RTOS中,所以对普通单片机开发者来说网口使用起来相对难度较大一些.在 ...
- 对路径 obj 文件夹访问被拒绝
TFS 刚下载的项目,出现该问题. 解决方案: 将文件夹属性“只读”,取消