定义一个学生结构体类型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

import java.util.Scanner;

class Student{//这里建一个类只是为了方便一些,
//其实建四个数组也是可以的
String name;
String gender;
int age;
int credit;
}
public class P1102 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
Student[] arr = new Student[num];
for(int i = 0 ;i < arr.length;i ++) {
arr[i] = new Student();
arr[i].name = sc.next();
arr[i].gender = sc.next();
arr[i].age = sc.nextInt();
arr[i].credit = sc.nextInt();
}
int j ;
Student target = new Student();
for(int i = 0 ;i < arr.length;i ++) {
j = i;
target = arr[i];
while (j > 0 && target.credit < arr[j - 1].credit){
arr[j] = arr[j - 1];
j--;
}
arr[j] = target;
}
for(int i = 0;i < arr.length;i ++) {
System.out.println(arr[i].name + " " + arr[i].gender + " " + arr[i].age + " " + arr[i].credit);
}
} }
import java.util.Arrays;
import java.util.Scanner; public class P1102 {
public static class People implements Comparable<People>{
int id;
String name;
int score;
public People(String a,String b,String c,int score,int id){
this.name=a+" "+b+" "+c;
this.id=id;
this.score=score;
}
@Override
public int compareTo(People o) {
if(this.score==o.score){
return this.id-o.id;
}
return this.score-o.score; }
public String toString(){
return this.name+" "+this.score; }
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
People[] num = new People[n];
for (int i = 0; i < num.length; i++) {
String a = sc.next();
String b = sc.next();
String c = sc.next();
int score =sc.nextInt();
num[i] = new People(a,b,c,score,i);
}
Arrays.sort(num);
for (int i = 0; i < num.length; i++) {
System.out.println(num[i].toString());
} } }

Java实现 蓝桥杯VIP 算法训练 P1102的更多相关文章

  1. Java实现蓝桥杯VIP 算法训练 找公倍数

    问题描述 这里写问题描述. 打印出1-1000所有11和17的公倍数. 样例输入 一个满足题目要求的输入范例. 样例输出 与上面的样例输入对应的输出. 这道题其实没有什么可写的,但是为了让读者更方便的 ...

  2. Java实现 蓝桥杯VIP 算法训练 连通分块(并查集)

    试题 算法训练 连通分块 资源限制 时间限制:200ms 内存限制:8.0MB 问题描述 连通分块 输入格式 输入的第一行包含两个整数n, m n代表图中的点的个数,m代表边的个数 接下来m行,每行2 ...

  3. Java实现 蓝桥杯VIP 算法训练 无权最长链

    试题 算法训练 无权最长链 问题描述 给定一个n节点m边的无圈且连通的图,求直径 输入格式 第一行两个数字n,m 接下来m行每行两个数字x,y,代表x,y之间有一条边 输出格式 要求用户的输出满足的格 ...

  4. Java实现 蓝桥杯VIP 算法训练 星际交流

    算法训练 星际交流 时间限制:1.0s 内存限制:256.0MB 问题描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法 ...

  5. Java实现 蓝桥杯VIP 算法训练 Car的旅行路线

    大家可以看一下这个,蓝桥杯官网的这道题是有问题的 Car的旅行路线 算法训练 Car的旅行路线 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 查看参考代码 问题描述 又到暑假 ...

  6. Java实现 蓝桥杯VIP 算法训练 最大质因数(暴力)

    试题 算法训练 最大质因数 问题描述 给出N个数字,求出有最大的最大质因数的那个数 输入格式 第一行:一个整数N. 接下来的N行,每行一个整数A_i,表示给出的那N个数字. 输出格式 第一行:一个整数 ...

  7. Java实现 蓝桥杯VIP 算法训练 与1连通的点的个数(并查集)

    试题 算法训练 与1连通的点的个数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 没有问题描述. 输入格式 输入的第一行包含两个整数n, m n代表图中的点的个数,m代表边的个数 ...

  8. Java实现 蓝桥杯VIP 算法训练 非递归(暴力)

    试题 算法训练 非递归 问题描述 当x>1时,Hermite多项式的定义见第二版教材125页.用户输入x和n,试编写"非递归"函数,输出对应的Hermite多项式的值.其中x ...

  9. Java实现 蓝桥杯VIP 算法训练 步与血(递推 || DFS)

    试题 算法训练 步与血 问题描述 有n*n的方格,其中有m个障碍,第i个障碍会消耗你p[i]点血.初始你有C点血,你需要从(1,1)到(n,n),并保证血量大于0,求最小步数. 输入格式 第一行3个整 ...

随机推荐

  1. Ubuntu系统make menuconfig的依赖包ncurses安装

    Linux内核或者u-boot进行make menuconfig的时候,如果系统上没有安装ncurses,就会出现以下报错 *** Unable to find the ncurses librari ...

  2. about VennsBlog.

    此博客主要将用于记录自己学习路上的一些点滴及心得 同时,也希望各位提出指正 相互交流,共同进步 感谢相遇

  3. security安全框架,用户登录安全认证与退出

    一.创建用户表及实体类 二.编写security配置文件 <?xml version="1.0" encoding="UTF-8"?><bea ...

  4. ReactNative报错:Can't find variable: __fbBatchedBridge

    最近开始研究ReactNative,首先根据网上教程 http://www.codeceo.com/article/windows-react-native-android.html 一步一步来.完成 ...

  5. android 自定义Dialog去除黑色边框

    在自定义Dialog时显示的界面中老是有黑色的边框,下面就介绍使用style去除黑色边框方法. 首先在values/styles定义自定义样式: <style name="MyDial ...

  6. java ->IO流_File类

    IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据 ...

  7. java基础序--列化和反序列化

    一.什么是序列化和反序列化: 序列化:是指把java堆内存中的对象转换成字节(二进制流)的过程.也就是通过某种方式将java对象存储在磁盘内存中,这个过程称为序列化 反序列化:是把磁盘上的对象转恢复成 ...

  8. mysql事务与锁机制详解

    一.事务 1.事务简介 (1)事务的场景 转账:一个账户减少,另一个账户增加.两个动作同时成功或者同时失败.就要开启事务. (2)事务定义 事务是数据库管理系统执行过程中的一个逻辑单元,由一个有限的数 ...

  9. PAT-1132 Cut Integer (整数分割)

    Cutting an integer means to cut a K digits long integer Z into two integers of (K/2) digits long int ...

  10. 【MySQL】Centos7 yum安装MySQL5.7.25

    在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 安装操作 下载并安装MySQL官方的Yum ...