题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

属于偷懒模式,根据可观情况假定最高成绩为100分,用分数来标记二维数组的下标。二维数组的列用来按顺序保存相同分数的记录。用空间换时间,有点像操场上所有学生按班级排成不同的列,列里面学生按照座位号依次站队。缺点是如果最高成绩比较大,记录数比较多,会导致很大的空间开销。优点是查询速度快,根据最低分和最高分遍历局部数组就可以得到结果,不需要另外排序。
import java.util.Scanner;

//解题思路:空间换时间,非最优,假设成绩最高100分,用字符串二维数组的行号表示分数,列按照顺序存储相同分数的不同记录
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = Integer.parseInt(sc.nextLine());
//         System.out.println(num);
        int order = Integer.parseInt(sc.nextLine());
//         System.out.println(order);
        //创建字符串二维数组
        String[][] arr = new String[101][num + 1]; //字符数组默认为空,列长度最大为num(即所有人成绩都相同的情况)
        int minscore = 0;
        int maxscore = 0;
        while (sc.hasNext()) {
            String str = sc.nextLine();
//             System.out.println(str);
            String[] strarr = str.split(" ");
            int score = Integer.parseInt(strarr[1]);
            for (int i = 0; i <= num; i++) {
                if (null == arr[score][i]) {
                    arr[score][i] = str;
                    break;
                }
            }
            minscore = Math.min(score, minscore); //记录最低分
            maxscore = Math.max(score, maxscore); //记录最高分
        }
        //遍历数组输出内容
        if (order == 1) { //升序
            for (int j = minscore; j <= maxscore; j++) {
                for (int k = 0; k <= num; k++) {
                    if (null == arr[j][k]) {
                        break;
                    } else {
                        System.out.println(arr[j][k]);
                    }
                }
            }
        } else if (order == 0) { //降序
            for(int m = maxscore; m >= minscore; m--){
                for(int n = 0; n <= num; n++){
                    if(null == arr[m][n]){
                        break;
                    }else{
                        System.out.println(arr[m][n]);
                    }
                }
            }
        }

    }
}






#华为机试#
全部评论

相关推荐

10-29 15:38
门头沟学院 Java
榕城小榕树:难道你简历里写了配送路径优化算法?
点赞 评论 收藏
分享
10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务