蓝桥杯-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;
            }
        }
    }
}


相关文章
|
1月前
|
算法
蓝桥杯宝藏排序 | 数据结构 | 快速排序 归并排序
蓝桥杯宝藏排序 | 数据结构 | 快速排序 归并排序
|
1月前
|
人工智能 算法
蓝桥杯真题宝藏排序详解 | 冒泡排序 选择排序 插入排序
蓝桥杯真题宝藏排序详解 | 冒泡排序 选择排序 插入排序
|
5月前
|
人工智能 算法 搜索推荐
蓝桥杯宝藏排序题目算法(冒泡、选择、插入)
以下是内容的摘要: 本文介绍了三种排序算法:冒泡排序、选择排序和插入排序。冒泡排序通过不断交换相邻的逆序元素逐步排序,最坏情况下需要 O(n^2) 次比较。选择排序在每轮中找到剩余部分的最小元素并放到已排序序列的末尾,同样具有 O(n^2) 时间复杂度。插入排序则是将每个元素插入到已排序序列的正确位置,时间复杂度也是 O(n^2),但空间复杂度为 O(1)。
|
6月前
蓝桥杯真题代码记录(数位排序
蓝桥杯真题代码记录(数位排序
45 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-493 合并排序数组
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-493 合并排序数组
47 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-97 排序
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-97 排序
30 0
|
6月前
|
算法 Java
②【Java 组】蓝桥杯省赛真题解析 [振兴中华] [三部排序] 持续更新中...
②【Java 组】蓝桥杯省赛真题解析 [振兴中华] [三部排序] 持续更新中...
50 0
|
6月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
109 0
|
6月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
83 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
84 0