题目1023:EXCEL排序

题目1023:EXCEL排序

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:9636

解决:2256

题目描述:
    Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。
    对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3 
时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
输入:

    测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (N<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号。以下有N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要输出。

输出:
    对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3 
时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
样例输入:
3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98
4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 90
0 0
样例输出:
Case 1:
000001 Zoe 60
000007 James 85
000010 Amy 90
Case 2:
000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60
Case 3:
000001 Zoe 60
000007 James 85
000002 James 90
000010 Amy 90
参考代码:1 使用Scanner 差点超时
1023 Accepted 159100KB 2292B 2970MS Java / 代码 / 编辑 15:56:29

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main_Scanner {
		
	 private static class Student implements Comparable {
	        String id;
		 	String name;
	        int mark;
	        int k;
	        public Student(String id, String name, int mark,int k) {
	            this.id = id;
	            this.name = name;
	            this.mark = mark;
	            this.k = k;
	        }
	  
	        public String toString() {
	            return (this.id + " " +this.name+ " "+this.mark);
	        }
	  
	        @Override
	        public int compareTo(Student s1) {
	            if(k==1) return (this.id.compareTo(s1.id));
	        	
	            else if(k==2){
	        		  if (this.name.equals(s1.name)==false)
	  	                return (this.name.compareTo(s1.name));
	  	            else
	  	                return (this.id.compareTo(s1.id));
	        	}
	            
	            else{
	        		  if (s1.mark != this.mark)
	  	                return -(s1.mark - this.mark);
	  	            else
	  	                return (this.id.compareTo(s1.id));
	        	}
	          
	        }
	    }
	
	
	
	public static void main(String arg[]) throws IOException{
		
		Scanner sc = new Scanner(System.in);
		//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Integer count=0;
		
		while(sc.hasNext()){
			
			Integer N = sc.nextInt();
			Integer K = sc.nextInt();
			if(N==0 && K==0 ) break;
			String unuse = sc.nextLine();
			
			List students = new ArrayList();
			
			//学生列表加入
			for(int i=0;i

参考代码:2 使用BuffRead 时间降下来了
1023 Accepted 147408KB 2421B 2200MS Java / 代码 / 编辑 16:06:10

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.BreakIterator;
import java.util.*;
 
public class Main {
         
     private static class Student implements Comparable {
            String id;
            String name;
            int mark;
            int k;
            public Student(String id, String name, int mark,int k) {
                this.id = id;
                this.name = name;
                this.mark = mark;
                this.k = k;
            }
       
            public String toString() {
                return (this.id + " " +this.name+ " "+this.mark);
            }
       
            @Override
            public int compareTo(Student s1) {
                if(k==1) return (this.id.compareTo(s1.id));
                 
                else if(k==2){
                      if (this.name.equals(s1.name)==false)
                        return (this.name.compareTo(s1.name));
                    else
                        return (this.id.compareTo(s1.id));
                }
                 
                else{
                      if (s1.mark != this.mark)
                        return -(s1.mark - this.mark);
                    else
                        return (this.id.compareTo(s1.id));
                }
               
            }
        }
     
     
     
    public static void main(String arg[]) throws IOException{
         
        //Scanner sc = new Scanner(System.in);
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Integer count=0;
         
        while(true){
            String temp1 = br.readLine();
            String[] temp2 = temp1.split(" ");
            Integer N = Integer.parseInt(temp2[0]);
            Integer K = Integer.parseInt(temp2[1]);
            if(N==0 && K==0 ) break;
            //String unuse = sc.nextLine();
             
            List students = new ArrayList();
             
            //学生列表加入
            for(int i=0;i






你可能感兴趣的:(九度OJ)