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

问题描述
  给定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]);
			}
		}
	}
}

}
满分。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 1/29 页 1 跟我学 Java 面向对象程序设计技术及应用——应用冒泡排序算法实 现数组元素排序Java 程序实现示例 1.1 什么是冒泡排序算法 1.1.1 什么是冒泡排序算法 对于什么是冒泡排序算法(Bubble Sort),读者可以查询百科。在百科中的定义如下(如 下示图显示具体的定义):它重复地走访过要排序的元素列,依次比较两个相邻的元素,如 果顺序(如从大到小、首字母从 Z 到 A)错误就把他们交换过来。走访元素的工作是重复地 进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 经过这样的排序后,最后的元素应该会是最大的数(当然,也可能是最小的数,取决于 数据的排序格则和要求)。因此,一批数据中的较小元素会经由这样的"排序交换"慢慢"浮 (冒泡)"到这批数据的顶端(升序或降序排列) ——此排序算法由此得名。 1.1.2 冒泡排序算法的实现原理 比较两个相邻的元素,将值大的元素交换至右端。对每一对相邻的元素都完成同样的比 较工作直到最后一对,针对所有的元素都重复以上的步骤,除了最后一个元素,直到没有任 何一对数字需要进行比较为止。 因此,在程序设计实现方面,则要运用双层嵌套循环进行冒泡排序编程实现。 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 2/29 页 2 1.1.3 冒泡排序算法的主要特性 -- 算法稳定性 冒泡排序其实就是把一批数据中比较小的元素往前调或者把大的元素往后调,而比较是 相邻的两个元素进行比较,数据交换也只发生在这两个元素之间——两两比较、两两交换。 但如果相邻的两个元素值相等,则不会再进行交换的(减少了交换的次数)。而如果两 个元素的值相等、但元素在位置上并没有相邻,那么即使通过前面的两两交换把两个元素相 邻起来,这时候也不会对它们进行交换。所以相同元素值的两个元素的前后顺序在此算法中 并没有被改变,故冒泡排序是一种稳定排序算法。 1.2 应用冒泡排序算法实现数组元素排序Java 程序实现示例 1.2.1 在 MyEclipse 开发工具中创建 Java 工程项目 1、启动 MyEclipse 开发工具,并选择 Java Project 工程项目 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 3/29 页 3 2、在工程项目创建的对话框中输入项目名称 JavaDemo,并选择项目存放的目录路径 3、点击对话框中的完成(Finish)按钮,将创建出一个空的 Java 应用程序项目 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 4/29 页 4 1.2.2 在创建的 Java 应用程序项目中添加示例程序类 1、 右击所创建的 Java 应用程序项目名称 JavaDemo, 在弹出的快捷菜单中选择 New 新建一个 Java 程序类 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 5/29 页 5 2、在类创建的对话框中输入包名称为 com.bluedream.demo,类名称JavaBubbleSort,并选 择需要在 JavaBubbleSort 类中创建出 main()方法 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 6/29 页 6 3、点击对话框中的完成(Finish)按钮,将创建出一个空的 Java 程序类,在该类中自动地包 含有 main()方法 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 7/29 页 7 4、编程示例中的功能实现的程序代码 在该 Java 程序中,定义待排序的数组(目前数组中的各个元素是预先定义的,后续可以 由用户输入),然后对该数组中的各个元素值应用冒泡排序算法实现排序,并打印出排序前 和排序后的数组中的各个元素值,以方便进行对比。 (1)程序代码示例 在程序设计实现方面主要是应用双层嵌套 for 循环进行冒泡排序编程实现, 参考下面示例 代码中的嵌套 for 循环的实现代码。 package com.bluedream.demo; public class JavaBubbleSort { public static void main(String[] args) { /** * 定义存储待排序的数组 */ int[] someOneArray; /** * 定义一个变量,用来存储临时的数据 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值