牛客网———成绩排序

这道题我不会做,代码转自网络上的大佬

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。

示例:
jack      70
peter     96
Tom       70
smith     67

从高到低  成绩 
peter     96 
jack      70 
Tom       70 
smith     67

从低到高

smith     67

jack      70 
Tom      70 
peter     96

链接:https://www.nowcoder.com/questionTerminal/0383714a1bb749499050d2e0610418b1
来源:牛客网

import java.util.Scanner;
 
/**
* 成绩排序
* @author special
* @date 2017年12月18日 下午11:35:31
*/
public class Pro01 {
    private static String[] names;
    private static int[] grades;
    private static boolean compare(int i, int j, int flag){
        return flag == 0 ? grades[i] > grades[j] : grades[i] < grades[j];
    }
    private static void exch(int i, int j){
        String tempS = names[j];
        int tempG = grades[j];
        names[j] = names[i];
        grades[j] = grades[i];
        names[i] = tempS;
        grades[i] = tempG;
    }
    public static void sort(int flag){
        for(int i = 1; i < names.length; i++)
            for(int j = i; j > 0 && compare(j,j - 1,flag); j--){
                exch(j,j - 1);
            }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        while(input.hasNext()){
            int n = input.nextInt();
            int flag = input.nextInt();
            names = new String[n];
            grades = new int[n];
            for(int i = 0; i < n; i++){
                names[i] = input.next();
                grades[i] = input.nextInt();
            }
            sort(flag);
            for(int i = 0; i < n; i++){
                System.out.println(names[i] + " " + grades[i]);
            }
        }
    }
 
}

猜你喜欢

转载自www.cnblogs.com/JAYPARK/p/9986020.html