藍橋杯試題:排序

一、問題描述

給定?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),因此如果兩個元素在比較時被認為是相等的,它們的相對順序不會改變。

性能:對于大規模的數據集,自定義比較器的性能可能會影響整體排序效率。確保比較邏輯盡可能高效。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894704.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894704.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894704.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java—不可變集合

不可變集合&#xff1a;不可以被修改的集合 創建不可變集合的應用場景 如果某個數據不能被修改&#xff0c;把它防御性地拷貝到不可變集合中是個很好的實踐。當集合對象被不可信的庫調用時&#xff0c;不可變形式是安全的。 簡單理解&#xff1a;不想讓別人修改集合中的內容…

每日Attention學習18——Grouped Attention Gate

模塊出處 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模塊名稱 Grouped Attention Gate (GAG) 模塊作用 輕量特征融合 模塊結構 模塊特點 特征融合前使用Group…

響應式編程_04Spring 5 中的響應式編程技術棧_WebFlux 和 Spring Data Reactive

文章目錄 概述響應式Web框架Spring WebFlux響應式數據訪問Spring Data Reactive 概述 https://spring.io/reactive 2017 年&#xff0c;Spring 發布了新版本 Spring 5&#xff0c; Spring 5 引入了很多核心功能&#xff0c;這其中重要的就是全面擁抱了響應式編程的設計思想和實…

C/C++編譯器

C/C 代碼是不可跨平臺的&#xff0c;Windows 和 Unix-like 有著不同的 API&#xff0c;C/C 在不同平臺有著不同編譯器。 MSVC Windows 平臺&#xff0c;MSVC 是 Visual Studio 中自帶的 C/C 編譯器。 GCC Unix-like 平臺&#xff0c;GCC 原名 GNU C Compiler&#xff0c;后…

python gltf生成預覽圖

使用Python生成GLTF模型的預覽圖 隨著3D技術的不斷發展&#xff0c;GLTF&#xff08;GL Transmission Format&#xff09;逐漸成為了Web和移動應用程序中最流行的3D文件格式之一。GLTF文件不僅能以較小的體積存儲復雜的3D模型&#xff0c;還支持動畫、材質、光照和紋理等特性。…

html中的表格屬性以及合并操作

表格用table定義&#xff0c;標簽標題用caption標簽定義&#xff1b;用tr定義表格的若干行&#xff1b;用td定義若干個單元格&#xff1b;&#xff08;當單元格是表頭時&#xff0c;用th標簽定義&#xff09;&#xff08;th標簽會略粗于td標簽&#xff09; table的整體外觀取決…

【JavaScript】《JavaScript高級程序設計 (第4版) 》筆記-Chapter3-語言基礎

三、語言基礎 ECMAScript 的語法很大程度上借鑒了 C 語言和其他類 C 語言&#xff0c;如 Java 和 Perl。ECMAScript 中一切都區分大小寫。無論是變量、函數名還是操作符&#xff0c;都區分大小寫。 所謂標識符&#xff0c;就是變量、函數、屬性或函數參數的名稱。標識符可以由…

【前端】【Ts】【知識點總結】TypeScript知識總結

一、總體概述 TypeScript 是 JavaScript 的超集&#xff0c;主要通過靜態類型檢查和豐富的類型系統來提高代碼的健壯性和可維護性。它涵蓋了從基礎數據類型到高級類型、從函數與對象的類型定義到類、接口、泛型、模塊化及裝飾器等眾多知識點。掌握這些內容有助于編寫更清晰、結…

基于Springboot+vue的租車網站系統

基于SpringbootVue的租車網站系統是一個現代化的在線租車平臺&#xff0c;它結合了Springboot的后端開發能力和Vue的前端交互優勢&#xff0c;為用戶和汽車租賃公司提供了一個高效、便捷、易用的租車體驗和管理工具。以下是對該系統的詳細介紹&#xff1a; 一、系統架構 ?后…

藍橋杯之c++入門(二)【輸入輸出(上)】

目錄 前言1&#xff0e;getchar和 putchar1.1 getchar()1.2 putchar() 2&#xff0e;scanf和 printf2.1 printf2.1.1基本用法2.1.2占位符2.1.3格式化輸出2.1.3.1 限定寬度2.1.3.2 限定小數位數 2.2 scanf2.2.1基本用法2.2.2 占位符2.2.3 scanf的返回值 2.3練習練習1&#xff1a…

我的鴻蒙學習之旅:探索萬物互聯的新宇宙

在科技飛速發展的今天&#xff0c;操作系統領域的創新層出不窮。華為鴻蒙系統的出現&#xff0c;猶如一顆璀璨的新星&#xff0c;照亮了萬物互聯的未來之路。懷著對新技術的好奇與渴望&#xff0c;我踏上了學習鴻蒙的征程&#xff0c;這段經歷充滿了挑戰與驚喜&#xff0c;也讓…

Docker數據卷管理及優化

一、基礎概念 1.docker數據卷是一個可供容器使用的特殊目錄&#xff0c;它繞過了容器的文件系統&#xff0c;直接將數據存在宿主機上。 2.docker數據卷的作用&#xff1a; 數據持久化&#xff1a;即使容器被刪除或重建數據卷中的數據仍然存在 數據共享&#xff1a;多個容器可以…

java:mysql切換達夢數據庫(五分鐘適配完成)

背景 因為項目需要國產數據庫的支持&#xff0c;選擇了達夢數據庫&#xff0c;由于我們之前使用的是MySQL今天我們就來說一說&#xff0c;如何快速的切換到達夢數據庫&#xff0c;原本這一章我打算寫VIP章節的后續想想&#xff0c;就純分享。畢竟是國產數據庫遷移數據庫 這里…

在游戲本(6G顯存)上本地部署Deepseek,運行一個14B大語言模型,并使用API訪問

在游戲本6G顯存上本地部署Deepseek&#xff0c;運行一個14B大語言模型&#xff0c;并使用API訪問 環境說明環境準備下載lmstudio運行lmstudio 下載模型從huggingface.co下載模型 配置模型加載模型測試模型API啟動API服務代碼測試 deepseek在大語言模型上的進步確實不錯&#xf…

[leetcode]兩數之和等于target

源代碼 #include <iostream> #include <list> #include <iterator> // for std::prev using namespace std; int main() { int target 9; list<int> l{ 2, 3, 4, 6, 8 }; l.sort(); // 確保列表是排序的&#xff0c;因為雙指針法要求輸入是…

C# OpenCV機器視覺:學生注意力監測

小王是一位充滿活力的年輕教師&#xff0c;剛接手了一個新班級。他滿心歡喜地準備在課堂上大顯身手&#xff0c;把自己的知識毫無保留地傳授給學生。可沒上幾節課&#xff0c;他就發現了一個讓人頭疼的問題&#xff1a;課堂上總有那么幾個學生注意力不集中&#xff0c;要么偷偷…

DeepSeek R1技術報告關鍵解析(6/10):DeepSeek-R1 vs. OpenAI-o1-1217:性能對比分析

1. 為什么要對比 DeepSeek-R1 和 OpenAI-o1-1217&#xff1f; 在當前的大模型競爭中&#xff0c;OpenAI 的 o1-1217 被認為是推理能力較強的模型之一。 而 DeepSeek-R1 作為一個采用強化學習優化推理能力的開源模型&#xff0c;其性能是否能夠與 OpenAI-o1-1217 競爭&#xf…

PyQt6/PySide6 的 QTableView 類

QTableView 是 PyQt6 或 PySide6 庫中用于顯示二維表格數據的控件。它是一個非常強大且靈活的控件&#xff0c;適用于展示和編輯表格數據。QTableView 通常與 QAbstractItemModel 的子類&#xff08;如 QStandardItemModel 或自定義模型&#xff09;一起使用&#xff0c;以提供…

【嵌入式】C語言多文件編程與內聯函數

文章目錄 0 前言1 從C語言編譯說起2 重復定義錯誤&#xff08;ODR violation&#xff09;和條件編譯3 內聯函數inline和static inline4 總結 0 前言 最近在研究ARM內核代碼時&#xff0c;看到core_cm3.h中有大量的內聯函數&#xff0c;為此查閱了很多資料&#xff0c;也和朋友討…

10分鐘本地部署Deepseek-R1

10分鐘本地部署DeepSeek-R1 什么是DeepSeek-R1快速本地部署DeepSeek-R1Ollama下載Ollama安裝檢查是否安裝成功 安裝DeepSeek-R1模型模型使用測試 什么是DeepSeek-R1 DeepSeek-R1是中國的深度求索&#xff08;DeepSeek&#xff09;公司開發的智能助手。其具有極佳的語義理解和生…