分数划分

图片说明 图片说明

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Stack;

public class Main {
    static void sort(int arr[][]){
        int temp = 0;
        int temp1 = 0;
        for(int i = 0;i < arr.length - 1;i++){
            for (int j = 0; j < arr.length - 1; j++) {
                if(arr[j][1] < arr[j+1][1]){
                    temp = arr[j][1];temp1 = arr[j][0];
                    arr[j][1] = arr[j+1][1];arr[j][0] = arr[j+1][0];
                    arr[j+1][1] = temp;arr[j+1][0] = temp1;
                }
            }

        }
        int temp2 = 0;
        for(int i = 0;i < arr.length - 1;i++){
            for (int j = 0; j < arr.length - 1; j++) {
                if(arr[j][0] > arr[j+1][0] && arr[j][1] == arr[j+1][1]){
                    temp2 = arr[j][0];
                    arr[j][0] = arr[j+1][0];
                    arr[j+1][0] = temp2;
                }
            }

        }

    }

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        Stack<Character> st = new Stack<Character>();
        int n = sc.nextInt();
        int m = sc.nextInt();
        int arr[][] = new int[n][2];
        for(int i = 0;i < n;i ++){
            for (int j = 0; j < 2; j++) {
                arr[i][j] = sc.nextInt();
            }
        }
        sort(arr);
        int peo = (int) ((int)m * 1.5);
        int k = 0;
        while(arr[k][1] >= arr[peo - 1][1]){
            k++;
        }
        System.out.println(arr[k - 1][1] + " " + k);

        for(int i = 0;i < k;i ++){
            for (int j = 0; j < 2; j++) {
                System.out.printf(arr[i][j] + " ");
            }
            System.out.println();
        }





    }

}

回忆了一下冒泡排序,并且对冒泡排序进行了一点小小的优化

优化:如果两个人的分数一样,那么就可以继续利用冒泡排序,把id小的放在前面。接下来是设置一个k如果从大到小排序下来的分数都大于第k个的分数,就k++,最后得出的k就是要录取的人数,然后按照k打印出来即可

全部评论

相关推荐

点赞 评论 收藏
分享
10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务