201503-2 试题名称: 数字排序 java实现

本文介绍了一种算法,用于统计给定整数数组中各元素的出现频率,并按频率从高到低输出。通过排序和计数实现,适用于不超过1000个元素和1000范围内的非负整数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述
  给定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的非负整数。
思路
我首先建立三个数组,一个存放输入进来的数,一个存放输入进来的数出现的次数,最后一个存放输入进来去掉重复的数。给他设置判断条件,有一个小问题就是在判断条件里面最后一个数是无法判断的,你需要单独设置一个if条件来给他进行判断。最后输出的情况下,你直接拿一个循环和赢存放进去的次数相比较,如果有相等的就直接输出。
代码
import java.util.Arrays;
import java.util.Scanner;
public class Two {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner in = new Scanner(System.in);
	int n = in.nextInt();
	int arr[] = new int[n];
	int array[] = new int[n];
	int arrayy[] = new int[n];
	for (int i = 0; i < n; i++) {
		arr[i] = in.nextInt();
	}
	int count = 1;
	int temp = 0;
	Arrays.sort(arr);// 排序成1 2 2 2 3 3 3 3 4 5 5 5.
	for (int i = 1; i <= n-1 ; i++) {
		if (arr[i-1] == arr[i ]) {
			count++;// 记录每1个数出现的次数
			
		}else{
			array[temp]=arr[i-1];//将arr数组中的数存入到array数组当中				
			arrayy[temp]=count;//将出现的次数存入到arrayy数组当中
			count=1;
			temp++;
		}
		if(i==n-1){
			array[temp]=arr[i];			
			arrayy[temp]=count;		
			count=1;
			temp++;
		}
		
	}
	for (int i = n; i>0; i--) {
		for (int j = 0; j < arrayy.length; j++) {
			if(arrayy[j]==i){
				System.out.println(array[j]+" "+arrayy[j]);
			}
		}
	}
}

}
满分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值