小鑫の日常系列故事(十)——排名次

Problem Description

小鑫在来到SDUT之后,经过十分刻苦的学习和努力终于进入了ACM集训队。很快又一次ACM集训队的选拔就要开始了,集训队员们又忙碌了起来。他也十分幸运的被学长抓来当苦力。 o(∩_∩)o
这次学长给他分配的任务是写一个自动排名的程序,我们知道当选拔赛结束的时候,每一个参与选拔的同学都会有一个自己的分数。而集训队需要根据大家的分数排名来决定谁能够进入集训队,这个任务就落在了小鑫身上。
你能帮小鑫来完成这个程序么?
Input

输入的第一行为n 0

错误:冒泡排序冒泡排序!!!

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int c[] = new int[55];
        String s[] = new String[55];//字符串数组
        for(int i = 0; i < n; i++){
            s[i] = sc.next();
            c[i] = sc.nextInt();
        }
        int t;
        String T;
        for(int i = 0; i <= n - 2; i++){//
            if(c[i] < c[i+1])
            {
                t = c[i];
                c[i] = c[i+1];
                c[i+1] = t;

                T = s[i];
                s[i] = s[i+1];
                s[i+1] = T;
            }
        }

        for(int i = 0; i < n; i++){
            System.out.println(s[i] +" "+ c[i]);
        }
        sc.close();
    }

}
正确:
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int c[] = new int[55];
        String s[] = new String[55];//字符串数组
        for(int i = 0; i < n; i++){
            s[i] = sc.next();
            c[i] = sc.nextInt();
        }
        int t;
        String T;
        for(int i = 0; i < n - 1; i++){
            for(int j = 0; j < n-i-1; j++) {
                if(c[j] < c[j+1])
                {
                    t = c[j];
                    c[j] = c[j+1];
                    c[j+1] = t;

                    T = s[j];
                    s[j] = s[j+1];
                    s[j+1] = T;
                }
            }

        }

        for(int i = 0; i < n; i++){
            System.out.println(s[i] +" "+ c[i]);
        }
        sc.close();
    }

}
用类来仿照结构体来做:

import java.util.Scanner;
class Jg{
    String name;
    int score;
    public Jg(String name, int score) {
        this.name = name;
        this.score = score;
    }
}
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Jg a[] = new Jg[55];//将数组定义为自己定义的类类型(仿照结构体)
        for(int i = 0; i < n; i++) {
            a[i] = new Jg(sc.next(), sc.nextInt());//定义对象,且调用构造函数
        }
        for(int i= 0; i < n-1; i++) {
            for(int j = 0; j < n-i-1; j++) {
                if(a[j].score < a[j+1].score) {
                    Jg t;
                    t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
                }
            }
        }
        for(int i = 0; i < n; i++){
            System.out.println(a[i].name +" "+ a[i].score);
        }
        sc.close();
    }

}

你可能感兴趣的:(Java基础知识+OJ题目)