试题编号: 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分)的更多相关文章

  1. 201503-2 数字排序 Java

    思路: 将出现过的数以及次数放进Map中,转成List,用Comparator就可以排序了.参数中o2-o1,与排序规则相反,为降序 import java.util.ArrayList; impor ...

  2. 基于Hadoop 2.6.0运行数字排序的计算

    上个博客写了Hadoop2.6.0的环境部署,下面写一个简单的基于数字排序的小程序,真正实现分布式的计算,原理就是对多个文件中的数字进行排序,每个文件中每个数字占一行,排序原理是按行读取后分块进行排序 ...

  3. B1019 数字黑洞 (20分)

    B1019 数字黑洞 (20分) 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复 ...

  4. 初识指令重排序,Java 中的锁

    本文是作者原创,版权归作者所有.若要转载,请注明出处.本文只贴我觉得比较重要的源码 指令重排序 Java语言规范JVM线程内部维持顺序化语义,即只要程序的最终结果与它顺序化情况的结果相等,那么指令的执 ...

  5. CCF系列之数字排序(201503-2)

    问题描述试题编号: 201503-2试题名称: 数字排序时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...

  6. 算法练习5---快速排序Java版

    基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成 ...

  7. sort排序,按指定字段进去重,sort -t "^" -k 8 -su,ls给文件名中数字排序sort -k1.5n,Tab符要转义

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

  8. 2020.01.19【NOIP提高组】模拟比赛-1.水池,2.数字排序,3.球星,4.钻石交易 总结反思

    水池 比赛时 我最讨厌这种数学类题了,我首先想到了这几种情况,设\(jl[][]\)表示两点之间弧的距离,从F到G可以由 F->G F->B->A->G F->A-> ...

  9. 希尔排序及希尔排序java代码

    原文链接:http://www.orlion.ga/193/ 由上图可看到希尔排序先约定一个间隔(图中是4),然后对0.4.8这个三个位置的数据进行插入排序,然后向右移一位对位置1.5.9进行插入排序 ...

随机推荐

  1. SYSUCPC2017 DAG最多能添加多少边?

    校赛的一道题目 难度不大 不过还是挺有趣的 题意:给定一个有向图,问此图是不是一个DAG且不包含重边 如果是的话 回答最多可以添加多少条边且图仍然是个DAG 考虑对于任意一个点u 添加一条边(u,v) ...

  2. 杂项-公司:Sun

    ylbtech-杂项-公司:Sun Sun Microsystems是IT及互联网技术服务公司(已被甲骨文收购)Sun Microsystems 创建于1982年.主要产品是工作站及服务器.1986年 ...

  3. IJ:Eclipse快捷键大全

    ylbtech-IJ:Eclipse快捷键大全 1.返回顶部 1. Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加 ...

  4. python自动化测试学习笔记-6excel操作xlwt、xlrd、xlutils模块

    python中通过xlwt.xlrd和xlutils操作xls xlwt模块用于在内存中生成一个xls/xlsx对象,增加表格数据,并把内存中的xls对象保存为本地磁盘xls文件; xlrd模块用于把 ...

  5. 计算误差——ACM计算几何中的精度问题

    浮点数为何会有精度问题   占字节数 数值范围 十进制精度位数 float 4 -3.4e-38~3.4e38 6~7 double 8 -1.7e-308~1.7e308 14~15 如果内存不是很 ...

  6. android序列化(2)Parcelable与Parcel

    1.简介 Parcel  : 包裹 Android采用这个它封装消息数据.这个是通过IBinder通信的消息的载体.需要明确的是Parcel用来存放数据的是内存(RAM),而不是永久性介质(Nand等 ...

  7. Log4Net学习笔记(1)-完整的例子

    一.开发环境 编译器:VS2013 .Net版本:4.5 二.开发流程 1.从nuget上获取log4net 2.配置log4net的配置文件 <?xml version="1.0&q ...

  8. 在计算机视觉与人工智能领域,顶级会议比SCI更重要(内容转)

    很多领域,SCI是王道,尤其在中国,在教师科研职称评审和学生毕业条件中都对SCI极为重视,而会议则充当了补充者的身份.但是在计算机领域,尤其是人工智能与机器学习领域里,往往研究者们更加青睐于会议 我无 ...

  9. 为什么我的对象被 IntelliJ IDEA 悄悄的修改了?

    背景     最近,在复习JUC的时候调试了一把ConcurrentLinkedQueue的offer方法,意外的发现Idea在debug模式下竟然会 "自动修改" 已经创建的Ja ...

  10. javascript 到将来某个时间(2020-5-20)的倒计时

    function countDown(dateStr){ var end = +new Date(dateStr), start = +new Date(), during = Math.floor( ...