算法训练 P1102
时间限制:1.0s 内存限制:256.0MB
定义一个学生结构体类型student,包括4个字段,姓名、性别、年龄和成绩。然后在主函数中定义一个结构体数组(长度不超过1000),并输入每个元素的值,程序使用冒泡排序法将学生按照成绩从小到大的顺序排序,然后输出排序的结果。
输入格式:第一行是一个整数N(N<1000),表示元素个数;接下来N行每行描述一个元素,姓名、性别都是长度不超过20的字符串,年龄和成绩都是整型。
输出格式:按成绩从小到大输出所有元素,若多个学生成绩相同则成绩相同的同学之间保留原来的输入顺序。
输入:
3
Alice female 18 98
Bob male 19 90
Miller male 17 92
输出:
Bob male 19 90
Miller male 17 92
Alice female 18 98
输入格式:第一行是一个整数N(N<1000),表示元素个数;接下来N行每行描述一个元素,姓名、性别都是长度不超过20的字符串,年龄和成绩都是整型。
输出格式:按成绩从小到大输出所有元素,若多个学生成绩相同则成绩相同的同学之间保留原来的输入顺序。
输入:
3
Alice female 18 98
Bob male 19 90
Miller male 17 92
输出:
Bob male 19 90
Miller male 17 92
Alice female 18 98
示例代码:
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 import java.util.StringTokenizer; 5 6 public class Main { 7 public static void main(String[] args) throws IOException{ 8 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 int n = Integer.parseInt(br.readLine()); 10 11 Student[] stu = new Student[n]; //保存学生信息 12 13 for(int i = 0 ; i < n ; i++){ 14 stu[i] = new Student(); 15 String s = br.readLine(); 16 StringTokenizer stn = new StringTokenizer(s); //StringTokenizer类允许应用程序将字符串分解为标记 17 //将输入的一行字符分解,然后赋给每个变量 18 stu[i].name = stn.nextToken(); 19 stu[i].sex = stn.nextToken(); 20 stu[i].age = Integer.parseInt(stn.nextToken()); 21 stu[i].score = Integer.parseInt(stn.nextToken()); 22 } 23 24 //冒泡排序 25 for(int i = 0 ; i < n ; i++){ 26 for(int j = 1 ; j < n-i ; j++){ 27 Student student = new Student(); 28 if(stu[j-1].score > stu[j].score){ 29 student = stu[j-1]; 30 stu[j-1] = stu[j]; 31 stu[j] = student; 32 } 33 } 34 } 35 //输出排序后的学生信息 36 for(int i = 0 ; i < n ; i++){ 37 System.out.println(stu[i].name +" " + stu[i].sex + " " 38 + stu[i].age + " " + stu[i].score); 39 } 40 } 41 42 static class Student{ 43 public String name; 44 public String sex; 45 public int age; 46 public int score; 47 } 48 }