当前位置: 首页 > news >正文

蓝桥杯试题:排序

一、问题描述

给定 nn 个正整数 a1,a2,…,ana1​,a2​,…,an​,你可以将它们任意排序。现要将这 nn 个数字连接成一排,即令相邻数字收尾相接,组成一个数。问,这个数最大可以是多少。

输入格式

第一行输入一个正整数 nn(1≤n≤201≤n≤20)。

第二行输入 nn 个正整数 a1,a2,…,ana1​,a2​,…,an​(1≤ai≤1051≤ai​≤105)。

样例输入

3
13 312 343

样例输出

34331213

二、代码展示

import java.util.Scanner;
import java.util.Arrays;// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int num = scan.nextInt();scan.nextLine();String[] str = new String[num];for(int i = 0; i < num ; i++)str[i] = scan.next();Arrays.sort(str , (o1,o2)->(o2+o1).compareTo(o1+o2));StringBuilder str1 = new StringBuilder();for(String x:str){str1.append(x);}System.out.println(str1);scan.close();}
}

三、Arrays.sort() 排序

 Java 的 `Arrays.sort` 方法,通过 Lambda 表达式自定义了排序规则。
Arrays.sort(str, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));

 1. `Arrays.sort` 方法简介

`Arrays.sort` 是 Java 中用于对数组进行排序的方法。它有多种重载形式,其中一种允许传入一个自定义的比较器(Comparator)来定义排序规则。

2. Lambda 表达式解析


(o1, o2) -> (o2 + o1).compareTo(o1 + o2)

这是一个 Lambda 表达式,用于实现 `Comparator<String>` 接口的 `compare` 方法。具体来说:

参数:
   `o1` 和 `o2` 是待比较的两个字符串。

 逻辑:
   将 `o2` 和 `o1` 连接起来形成新的字符串 `o2 + o1`。
   将 `o1` 和 `o2` 连接起来形成新的字符串 `o1 + o2`。
   使用 `compareTo` 方法比较这两个新字符串的字典序。

 3. 排序规则解释

这个比较器的逻辑实际上是用"按字典序拼接后的结果进行排序",具体来说:

 如果 `o2 + o1` 在字典序上小于 `o1 + o2`,则 `o2` 应该排在 `o1` 前面。
 反之,如果 `o1 + o2` 小于 `o2 + o1`,则 `o1` 应该排在 `o2` 前面。

这种比较方式常用于将一组数字字符串按拼接后最大的字典序排序。例如,对于字符串数组 `["3", "30", "34", "5", "9"]`,排序后的结果将是 `["9", "5", "34", "3", "30"]`,因为拼接后的字符串 `"9534330"` 是最大的。

 4. 示例代码

以下是一个完整的示例,展示如何使用这段代码对字符串数组进行排序:


import java.util.Arrays;

public class CustomSortExample {
    public static void main(String[] args) {
        String[] str = {"3", "30", "34", "5", "9"};
        
        // 使用自定义比较器排序
        Arrays.sort(str, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));
        
        // 输出排序后的数组
        System.out.println(Arrays.toString(str));
    }
}


输出结果:
[9, 5, 34, 3, 30]

5. 注意事项

类型匹配:确保传入 `Arrays.sort` 的数组类型与 Lambda 表达式的参数类型一致。在上面的例子中,`str` 是 `String[]` 类型,因此 Lambda 的参数也是 `String` 类型。
  
稳定性:`Arrays.sort` 在 Java 8 及之后的版本中使用的是稳定的排序算法(TimSort),因此如果两个元素在比较时被认为是相等的,它们的相对顺序不会改变。

性能:对于大规模的数据集,自定义比较器的性能可能会影响整体排序效率。确保比较逻辑尽可能高效。

相关文章:

蓝桥杯试题:排序

一、问题描述 给定 nn 个正整数 a1,a2,…,ana1​,a2​,…,an​&#xff0c;你可以将它们任意排序。现要将这 nn 个数字连接成一排&#xff0c;即令相邻数字收尾相接&#xff0c;组成一个数。问&#xff0c;这个数最大可以是多少。 输入格式 第一行输入一个正整数 nn&#xff…...

实验十一 Servlet(二)

实验十一 Servlet(二) 【实验目的】 1&#xff0e;了解Servlet运行原理 2&#xff0e;掌握Servlet实现方式 【实验内容】 改造实验10&#xff0c;引入数据库&#xff0c;创建用户表&#xff0c;包括用户名和密码&#xff1a;客户端通过login.jsp发出登录请求&#xff0c;请求…...

第五天 初步了解ArkTS和ArkUI

初步了解ArkTS和ArkUI&#xff0c;可以从以下几个方面进行概述&#xff1a; 一、ArkTS简介 定义与关系&#xff1a; ArkTS是HarmonyOS&#xff08;鸿蒙系统&#xff09;优选的主力应用开发语言。它基于TypeScript&#xff08;TS&#xff09;进行扩展&#xff0c;兼容TS的所有特…...

java中的锁面试题

1、多线程中 synchronized 锁升级的原理是什么&#xff1f; synchronized 是JVM层面的锁&#xff0c;是 Java 关键字&#xff0c;通过 monitor 对象来完成&#xff0c;synchronized 的实现涉及到锁的升级&#xff0c;具体为无锁、偏向锁、自旋锁、重量级锁 synchronized 锁升级…...

ES6 变量解构赋值总结

1. 数组的解构赋值 1.1 基本用法 // 基本数组解构 const [a, b, c] [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3// 跳过某些值 const [x, , y] [1, 2, 3]; console.log(x); // 1 console.log(y); // 3// 解构剩余元素 const [first, ...re…...

知识蒸馏教程 Knowledge Distillation Tutorial

来自于&#xff1a;Knowledge Distillation Tutorial 将大模型蒸馏为小模型&#xff0c;可以节省计算资源&#xff0c;加快推理过程&#xff0c;更高效的运行。 使用CIFAR-10数据集 import torch import torch.nn as nn import torch.optim as optim import torchvision.tran…...

DeepSeek各版本说明与优缺点分析

DeepSeek各版本说明与优缺点分析 DeepSeek是最近人工智能领域备受瞩目的一个语言模型系列&#xff0c;其在不同版本的发布过程中&#xff0c;逐步加强了对多种任务的处理能力。本文将详细介绍DeepSeek的各版本&#xff0c;从版本的发布时间、特点、优势以及不足之处&#xff0…...

java进阶专栏的学习指南

学习指南 java类和对象java内部类和常用类javaIO流 java类和对象 类和对象 java内部类和常用类 java内部类精讲Object类包装类的认识String类、BigDecimal类初探Date类、Calendar类、SimpleDateFormat类的认识java Random类、File类、System类初识 javaIO流 java IO流【…...

kamailio-osp模块

该文档详细讲解了如何在Kamailio中配置和使用OSP模块&#xff08;Open Settlement Protocol Module&#xff09;&#xff0c;以实现基于ETSI标准的安全多边对等互联&#xff08;Secure Multi-Lateral Peering&#xff09;。以下是核心内容的总结&#xff1a; 1. 模块功能 OSP模…...

【TensorFlow】T1:实现mnist手写数字识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1、设置GPU import tensorflow as tf gpus tf.config.list_physical_devices("GPU")if gpus:gpu0 gpus[0]tf.config.experimental.set_memory_g…...

Rapidjson 实战

Rapidjson 是一款 C 的 json 库. 支持处理 json 格式的文档. 其设计风格是头文件库, 包含头文件即可使用, 小巧轻便并且性能强悍. 本文结合样例来介绍 Rapidjson 一些常见的用法. 环境要求 有如何的几种方法可以将 Rapidjson 集成到您的项目中. Vcpkg安装: 使用 vcpkg instal…...

【React】受控组件和非受控组件

目录 受控组件非受控组件基于ref获取DOM元素1、在标签中使用2、在组件中使用 受控组件 表单元素的状态&#xff08;值&#xff09;由 React 组件的 state 完全控制。组件的 state 保存了表单元素的值&#xff0c;并且每次用户输入时&#xff0c;React 通过事件处理程序来更新 …...

Ollama+deepseek+Docker+Open WebUI实现与AI聊天

1、下载并安装Ollama 官方网址&#xff1a;Ollama 安装好后&#xff0c;在命令行输入&#xff0c; ollama --version 返回以下信息&#xff0c;则表明安装成功&#xff0c; 2、 下载AI大模型 这里以deepseek-r1:1.5b模型为例&#xff0c; 在命令行中&#xff0c;执行&…...

DEEPSEKK GPT等AI体的出现如何重构工厂数字化架构:从设备控制到ERP MES系统的全面优化

随着深度学习&#xff08;DeepSeek&#xff09;、GPT等先进AI技术的出现&#xff0c;工厂的数字化架构正在经历前所未有的变革。AI的强大处理能力、预测能力和自动化决策支持&#xff0c;将大幅度提升生产效率、设备管理、资源调度以及产品质量管理。本文将探讨AI体&#xff08…...

阿莱(arri)mxf文件变0字节的恢复方法

阿莱(arri)是专业级的影视产品软硬件供应商&#xff0c;很多影视作品都是使用阿莱(arri)的设备拍摄出来的。总体上来讲阿莱(arri)的文件格式有mov和mxf两种&#xff0c;这次恢复的是阿莱(arri)的mxf&#xff0c;机型是arri mini,素材保存在一个8t的硬盘上&#xff0c;使用的是e…...

初识 Node.js

在当今快速发展的互联网技术领域&#xff0c;Node.js 已经成为了一个非常流行且强大的平台。无论是构建高性能的网络应用、实时协作工具还是微服务架构&#xff0c;Node.js 都展示了其独特的优势。本文将带您走进 Node.js 的世界&#xff0c;了解它的基本概念、核心特性以及如何…...

debug-vscode调试方法

debug - vscode gdb调试指南 文章目录 debug - vscode gdb调试指南前言一、调试代码二、命令查看main反汇编查看寄存器打印某个变量打印寄存器&#xff0c;如pc打印当前函数栈信息&#xff08;当前执行位置&#xff09;打印程序栈局部变量x命令的语法如下所示&#xff1a;打印某…...

Cypher进阶(函数、索引)

文章目录 Cypher进阶Aggregationcount()函数统计函数collect()函数 unwindforeachmergeunionload csvcall 函数断言函数all()any()~~exists()~~is not nullnone()single() 标量函数coalesce()startNode()/endNode()id()length()size() 列表函数nodes()keys()range()reduce() 数…...

XML Schema 数值数据类型

XML Schema 数值数据类型 引言 XML Schema 是一种用于描述 XML 文档结构的语言。它定义了 XML 文档中数据的有效性和结构。在 XML Schema 中,数值数据类型是非常重要的一部分,它定义了 XML 文档中可以包含的数值类型。本文将详细介绍 XML Schema 中常用的数值数据类型,以及…...

Window获取界面空闲时间

‌GetLastInputInfo‌是一种Windows API函数&#xff0c;用于获取上次输入操作的时间。 该函数通过LASTINPUTINFO结构返回最后一次输入事件的时间。 原型如下 BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii);那么可以利用GetLastInputInfo来得到界面没有操作的时长 uint…...

STM32CubeIDE实战指南:从代码编译到一键下载的完整流程解析

1. STM32CubeIDE开发环境概述 对于刚接触STM32开发的工程师来说&#xff0c;选择一款合适的集成开发环境(IDE)至关重要。STM32CubeIDE是ST官方推出的免费开发工具&#xff0c;它集成了代码编辑、编译、调试和下载功能于一体&#xff0c;特别适合新手快速上手。我在实际项目中使…...

DriveBench:面向真实驾驶场景的长序列多智能体交互基准测试框架

1. 项目概述&#xff1a;从“世界基准”到“驾驶基准”的演进如果你在自动驾驶或者计算机视觉领域摸爬滚打过几年&#xff0c;一定对“基准测试”&#xff08;Benchmark&#xff09;这个词又爱又恨。爱的是&#xff0c;它提供了一个相对公平的擂台&#xff0c;让不同算法、不同…...

从零构建可定制对话系统:模块化架构与RAG实战指南

1. 项目概述&#xff1a;从零构建一个可定制的对话系统最近在折腾一个挺有意思的东西&#xff0c;我把它叫做“定制化聊天系统”。起因很简单&#xff0c;市面上现成的聊天机器人&#xff0c;无论是开源的还是商业的&#xff0c;总感觉差了那么点意思。要么是功能太臃肿&#x…...

Go语言静态站点生成器Zeuxis:极简架构与高性能构建实践

1. 项目概述&#xff1a;一个轻量级、高性能的静态站点生成器最近在折腾个人博客和文档站点&#xff0c;发现市面上的静态站点生成器虽然多&#xff0c;但要么配置复杂、学习曲线陡峭&#xff0c;要么过于臃肿&#xff0c;启动和构建速度慢得让人抓狂。直到我遇到了bnomei/zeux…...

AXI Crossbar设计解析:从总线互联原理到SoC集成实战

1. 项目概述&#xff1a;AXI Crossbar&#xff0c;不仅仅是“总线交叉开关”在复杂的数字系统设计&#xff0c;尤其是SoC&#xff08;片上系统&#xff09;和FPGA应用中&#xff0c;我们常常面临一个核心问题&#xff1a;多个主设备&#xff08;Master&#xff0c;如CPU、DMA控…...

用Circuit Playground Express制作可穿戴互动闪光T恤:零焊接图形化编程入门

1. 项目概述&#xff1a;一件会“跳舞”的闪光T恤几年前&#xff0c;当我第一次把微控制器缝进衣服里时&#xff0c;那感觉既兴奋又麻烦——满桌子的电线、烙铁&#xff0c;还有对洗衣机深深的恐惧。但现在&#xff0c;像Adafruit的Circuit Playground Express&#xff08;后面…...

从LED驱动到Arduino编程:电子入门实战指南与避坑技巧

1. 从一颗LED到智能世界&#xff1a;我的电子入门实践心路很多朋友第一次接触电子制作&#xff0c;可能都是从让一颗LED亮起来开始的。我至今还记得十几年前&#xff0c;第一次用一节5号电池直接点亮一颗红色发光二极管时的那种兴奋。但很快&#xff0c;问题就来了&#xff1a;…...

保姆级教程:用沁恒CH34xSerCfg工具自定义你的USB转串口设备(VID/PID/序列号)

从零玩转沁恒CH34x芯片&#xff1a;深度定制你的USB转串口设备全攻略 每次插入相同的USB转TTL模块&#xff0c;电脑却分配不同的COM端口号&#xff1f;团队协作时多个同型号设备互相干扰&#xff1f;这些困扰硬件开发者多年的痛点&#xff0c;其实通过沁恒CH34x系列芯片的深度配…...

为什么Delorean是Python时间处理的最佳选择?

为什么Delorean是Python时间处理的最佳选择&#xff1f; 【免费下载链接】delorean Delorean: Time Travel Made Easy 项目地址: https://gitcode.com/gh_mirrors/de/delorean 在Python开发中&#xff0c;时间处理常常是一个令人头疼的问题&#xff0c;尤其是涉及到时区…...

2026届毕业生推荐的五大AI辅助论文方案解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下这个信息呈现爆炸态势的时代里&#xff0c;内容所具备的价值越发突显出来。不管是企业…...