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进行插入排序 ...
随机推荐
- Bing必应地图中国API一显示地图 (转) 做人要厚道
Bing必应地图中国API一显示地图 2011-05-24 14:27:31| 分类: Bing&Google|字号 订阅 微软必应地图中国地图API发布已经有10天了,考虑到网上现 ...
- 【Codevs1080】质数环
http://codevs.cn/problem/1031/ 不讲什么,预处理素数+搜索 // <C.cpp> - Sun Oct 9 12:58:23 2016 // This file ...
- HTML5移动Web开发
1. 响应式web设计 说到这个,移动开发面对的屏幕尺寸那叫一个丰富,其中安卓阵营就够让人头痛的.我们在PC端常用的两种布局方式就是固定布局和弹性布局,前者设置一个绝大多数电脑能正常显示的固定宽度居中 ...
- INT类型知多少
前言: 整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉int类型相关知识,也会介绍其他整型字段的使用. 1.整型分 ...
- document.write()、onclick="alert(xxx)、innerHTML、image.src.match("xxx")、id2.style.color="blue";、isNaN(id2)、document.write("糟糕!文档消失了。")、alert(id2.outerHTML)、id2.className="id06";、onclick="return registe"
<html> <head> <meta charset="utf-8"> <title>javascript</title&g ...
- [转]Mysql Join语法解析与性能分析
转自:http://www.cnblogs.com/BeginMan/p/3754322.html 一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 ...
- Ajax动态加载数据
前言: 1.这个随笔实现了一个Ajax动态加载的例子. 2.使用.net 的MVC框架实现. 3.这个例子重点在前后台交互,其它略写. 开始: 1.控制器ActionResult代码(用于显示页面) ...
- Spring Boot (29) 定时任务
使用场景:数据定时增量同步,定时发送邮件,爬虫定时抓取 定时任务概述 定时任务:顾名思义就是在特定/指 定的时间进行工作,比如我们的手机闹钟,他就是一种定时的任务. 实现方式: 1.Timer:JDK ...
- Js变量类型
值类型和引用类型 值类型(基本类型):5种,Number String Boolean null undefined var a=10; var b=a; a=2; console.log(b); a ...
- Android 仿淘宝头条竖直跑马灯式新闻标题及“分页思想
在淘宝App的首页中间位置,有一块小小的地方在不知疲倦地循坏滚动着头条标题(见下图的红框区域),这样的设计无疑能够在有限的手机屏幕上展示更丰富的内容.而实现这一功能需要用到的控件就是我在上一篇文章中提 ...