蓝桥杯-1/14天-数位排序【继承Comparable接口实现排序】

简介: 蓝桥杯-1/14天-数位排序【继承Comparable接口实现排序】

题目来源:数位排序

        之前写过一个刷题中遇到的排序问题洛谷1093先根据学生的总成绩排序如果总分一样的情况下再根据语文排序。总结最好的方法就是写一个类继承Comparable接口来重写compare方法

之前学艺不精,都是直接拿数据结构(List、Map)肝,比如这道题,我一开始直接拿List存储 1~n然后把list传数组然后写一个sort方法用冒泡对 数组 进行排序,结构就是超时

因为如果测试集中有相当大的数据时,冒泡排序是一种很耗时的方法,它只适合对少量的数据进行排序。

使用类继承Comparable接口重写compare的方法:

import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
    private static List<Integer> list = new ArrayList<>();
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int m = scan.nextInt();
        scan.close();
        for(int i=1;i<=n;i++){
            list.add(i);
        }
        int[] arr = sort(list);
        System.out.println(arr[m-1]);
    }
    public static int sumOfBit(int num){
        int sum=0;
            int temp=0;
            while (num!=0){
                temp=num%10;
                sum+=temp;
                num/=10;
            }
            return sum;
    }
}
private static class Node implements Comparable<Node>{
        int sumOfBit;
        int value = 0;
        public Node(int value){
            this.value = value;
            this.sumOfBit = sumOfBit(value);
        }
        @Override
        public int compareTo(Node o) {
            if (this.sumOfBit > o.sumOfBit){
                return 1;
            }else if (this.sumOfBit == o.sumOfBit){
                if (this.value > o.value){
                    return 1;
                }else {
                    return -1;
                }
            }else {
                return -1;
            }
        }
    }
}


相关文章
|
8月前
|
机器学习/深度学习 算法 搜索推荐
蓝桥杯丨高级排序
蓝桥杯丨高级排序
33 0
|
8月前
|
算法 搜索推荐
蓝桥杯丨简单排序
蓝桥杯丨简单排序
52 0
|
21天前
蓝桥杯真题代码记录(数位排序
蓝桥杯真题代码记录(数位排序
13 0
|
21天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-493 合并排序数组
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-493 合并排序数组
24 0
|
21天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-97 排序
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-97 排序
15 0
|
21天前
|
算法 Java
②【Java 组】蓝桥杯省赛真题解析 [振兴中华] [三部排序] 持续更新中...
②【Java 组】蓝桥杯省赛真题解析 [振兴中华] [三部排序] 持续更新中...
27 0
|
21天前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
60 0
|
21天前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
45 0
|
21天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
46 0
|
21天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
56 0