赞
踩
题目名称:按身高和体重排队
时间限制:限制时间C/C++ 1秒,其他/Java 2s以内
内存限制:32768K
题目描述: 某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。
输入描述: 两个序列,每个序列由 n 个正整数组成(0 < n <= 100)。第一个序列中的数值代表身高,第二个序列中的数值代表体重。
输出描述: 排列结果,每个数值都是原始序列中的学生编号,编号从 1 开始
示例 1
输入:
4
100 100 120 130
40 30 60 50
输出:
2134
import java.util.*; public class Main{ public static void main(String[] args){ long startTime=System.currentTimeMillis(); //获取开始时间 //获取输入数据 Scanner in = new Scanner(System.in); int n = in.nextInt(); //定义map集合<初始序号,学生信息> Map<Integer,Person> map = new HashMap<Integer,Person>(); //初始化学生初始序号、身高 for (int i = 0; i < n; i++) { Person p = new Person(i+1); p.setHeight(in.nextInt()); map.put(i,p); } //初始化学生体重 for (int i = 0; i < n; i++) { map.get(i).setWeight(in.nextInt()); } //遍历map集合,选择排序,性质不稳定,导致测试用例通过率91% //运行时间:1078ms /*for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { if(map.get(i).getHeight()>map.get(j).getHeight()){ Person p = map.get(i); map.put(i,map.get(j)); map.put(j,p); }else if(map.get(i).getHeight()==map.get(j).getHeight()){ if(map.get(i).getWeight()>map.get(j).getWeight()){ Person p = map.get(i); map.put(i,map.get(j)); map.put(j,p); } } } }*/ //遍历map集合,选择性质稳定的冒泡排序,测试用例通过率应该能100%了 //运行1153ms for (int i = 0; i < n-1; i++) { for (int j = 0; j < n-i-1; j++) { if(map.get(j).getHeight()>map.get(j+1).getHeight()){ Person p = map.get(j); map.put(j,map.get(j+1)); map.put(j+1,p); }else if(map.get(j).getHeight()==map.get(j+1).getHeight()){ if(map.get(j).getWeight()>map.get(j+1).getWeight()){ Person p = map.get(j); map.put(j,map.get(j+1)); map.put(j+1,p); } } } } //输出结果 for (int i = 0; i < n ; i++) { System.out.print(map.get(i).getId()); if(i!=n-1){ System.out.print(" "); } } //计算运行时间 long endTime=System.currentTimeMillis(); //获取结束时间 System.out.println("\n程序运行时间: "+(endTime-startTime)+"ms"); } } class Person{ int id; int height; int weight; public Person(int id) { this.id = id; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。