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

【第42天】Arrays.sort 与 Collections.sort 应用 | 整形数组与集合的排序

本文已收录于专栏
🌸《Java入门一百练》🌸

学习指引

  • 序、专栏前言
  • 一.sort函数
  • 二、【例题1】
    • 1、题目描述
    • 2、解题思路
    • 3、模板代码
    • 4、代码解析
  • 二、【例题1】
    • 1、题目描述
    • 2、解题思路
    • 3、模板代码
    • 4、代码解析
  • 三、推荐专栏

序、专栏前言

   本专栏开启,目的在于帮助大家更好的掌握学习Java,特别是一些Java学习者难以在网上找到系统地算法学习资料帮助自身入门算法,同时对于专栏内的内容有任何疑问都可在文章末尾添加我的微信给你进行一对一的讲解。
   但最最主要的还是需要独立思考,对于本专栏的所有内容,能够进行完全掌握,自己完完全全将代码写过一遍,对于算法入门肯定是没有问题的。
   算法的学习肯定不能缺少总结,这里我推荐大家可以到高校算法社区将学过的知识进行打卡,以此来进行巩固以及复习。
  学好算法的唯一途径那一定是题海战略,大量练习的堆积才能练就一身本领。专栏的任何题目我将会从【题目描述】【解题思路】【模板代码】【代码解析】等四板块进行讲解。

一.sort函数

  sort函数,顾名思义就是一个排序函数,它可以按照我们传递参数的要求,来将数组变得有序。虽然我们前面讲过好几种排序,但真正遇到排序的需求时,我们并不会去手写一个排序函数,而是使用库函数自带的排序,其底层实现主要是以快速排序为主,复杂度我们可以视为 O(nlogn)。O(nlogn)。O(nlogn)
 如何是想对数组进行排序,我们需要调用Arrays这个包里的sort函数,如果是集合类需要进行排序,我们则调用的是Collections包里的sort。排序时,我们可以传参指定部分区间排序,也可以选择是从小到大,还是从大到小,当然默认是从小到大进行排序。

二、【例题1】

1、题目描述

  输入一个正数 nnn, 然后输出 nnn 个整数,请先将其顺序输出后再进行逆序输出

2、解题思路

我们根据题意,直接进行排序输出即可

3、模板代码

数组

import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();Integer[] a=new Integer[n];for (int i = 0; i < n; i++) {a[i]=sc.nextInt();}Arrays.sort(a);for (int i = 0; i < n; i++) {System.out.println(a[i]);}Arrays.sort(a, Collections.reverseOrder());for (int i = 0; i < n; i++) {System.out.println(a[i]);}}
}

集合

import java.util.*;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();List<Integer> list=new ArrayList<>();for (int i = 0; i < n; i++) {int x=sc.nextInt();list.add(x);}Collections.sort(list);for (int i = 0; i < n; i++) {System.out.println(list.get(i));}Collections.sort(list,Collections.reverseOrder());for (int i = 0; i < n; i++) {System.out.println(list.get(i));}}
}

4、代码解析

升序排序很好理解,但降序排序我们重点提一下。因为排序的方式默认为升序排序,如果想降序排序,最简单的方式就是传多一个参数Collections.reverseOrder()。但此时如果数组类型是int会报错,所以我们需要使用包装类Integer,所以如果大家以后需要降序排序时数组类型可以使用Integer

二、【例题1】

1、题目描述

  输入三个正数 nnnlll, rrr , 然后输出 nnn 个整数,请将下标 [l,r][l,r][l,r] 排序后输出

2、解题思路

只排序某个区间,我们只需要多传入两个参数 lllrrr 即可。

3、模板代码

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int l=sc.nextInt();int r=sc.nextInt();int[] a=new int[n];for (int i = 0; i < n; i++) {a[i]=sc.nextInt();}Arrays.sort(a,l,r+1);for (int i = 0; i < n; i++) {System.out.println(a[i]);}}
}

4、代码解析

需要注意一点,Arrays.sort传入参数排序的区间范围是 [l,r)[l,r)[l,r),左闭右开区间,如果我们想排序区间[l,r][l,r][l,r]那么我们传入的参数应该是 lllr+1r+1r+1
在这里插入图片描述

三、推荐专栏

🌌《零基础学算法100天》🌌
👇 学习有疑问?👇

相关文章:

【第42天】Arrays.sort 与 Collections.sort 应用 | 整形数组与集合的排序

本文已收录于专栏&#x1f338;《Java入门一百练》&#x1f338;学习指引序、专栏前言一.sort函数二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析三、推荐专栏序、专栏前言 本专栏开启&#xff0c;目的…...

LeetCode第334场周赛

2023.2.26LeetCode第334场周赛 A. 左右元素和的差值 思路 前缀和后缀和 代码 class Solution { public:vector<int> leftRigthDifference(vector<int>& nums) {int n nums.size();vector<int> l(n), r(n), ans(n);for (int i 1; i < n; i )l[…...

基于深度学习的三维重建网络PatchMatchNet(三):PatchMatchNet配置及代码主要运行流程

目录 1.PatchMatchNet环境配置 2. PatchMatchNet的大致执行流程(eval.py) 2.1 深度图的保存...

【一天一门编程语言】设计一门编程语言,给出基础语法代码示例,SDK设计。

文章目录设计一门编程语言&#xff0c;给出基础语法代码示例&#xff0c;SDK设计。一、编程语言设计1.1 语言名称1.2 数据类型1.3 基本运算符1.4 控制语句二、SDK设计2.1 基础库2.2 第三方库三、例子用 Mango 这门语言实现斐波那契数列。基础语法代码示例SDK 设计使用 Mango 语…...

ubuntu 下 python 安装 venv

ubuntu 下 python 安装 venv1.首先&#xff0c;确保您的系统已安装 Python3 和 pip3&#xff0c;如果没有安装&#xff0c;可以使用以下命令安装&#xff1a;2. 接着&#xff0c;安装 virtualenv 包&#xff0c;使用以下命令&#xff1a;3.创建 Python 虚拟环境&#xff0c;使用…...

HTML#1快速入门

一. 简介HTML是一门语言, 所有的网页都是用HTML编写的HTML(Hyper Text Markup Language): 超文本(超越了文本限制,除了文字信息还可以定义图片,音频,视频等)标记语言(有标签构成的语言)W3C标准: 网页主要由三部分组成(1) 结构: HTML(2) 表现: CSS(3) 行为: JavaScript二. 快速入…...

【MySQL】事务隔离级别是怎么实现的?

事务隔离级别是怎么实现的&#xff1f; 四种隔离级别具体的实现方式 对于「读未提交」&#xff1a;直接读取最新的数据就好。对于「串行化」&#xff1a;通过加读写锁的方式来避免并行访问。对于「读提交」和「可重复读」&#xff1a;通过 Read View 来实现&#xff0c;主要区…...

JSP网上书店系统用myeclipse定制开发mysql数据库B/S模式java编程计算机网页

一、源码特点 JSP 网上书店系统 是一套完善的系统源码&#xff0c;对理解JSP java 编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。研究的基本内容是基于网上书店系 统&#xff0c;使用JSP作为页面开发工具。Web服务的运…...

配置 Haproxy 负载均衡群集

配置 haproxy 负载均衡群集 &#x1f3c6;荣誉认证&#xff1a;51CTO博客专家博主、TOP红人、明日之星&#xff1b;阿里云开发者社区专家博主、技术博主、星级博主。 &#x1f4bb;微信公众号&#xff1a;微笑的段嘉许 &#x1f4cc;本文由微笑的段嘉许原创&#xff01; &#…...

计算机网络笔记 | 第一章:计算机网络概述(1.1-1.4小节知识点整理)

从专栏将讲述有关于计算机网络相关知识点&#xff0c;如果有想学习Java的小伙伴可以点击下方连接查看专栏&#xff0c;还有JavaEE部分 本专栏地址&#xff08;持续更新中&#xff09;&#xff1a;&#x1f525;计算机网络 MyBatis&#xff1a;✍️MyBatis Java入门篇&#xff1…...

Flutter3引用原生播放器-Android篇

接上篇&#xff1a;Flutter3引用原生播放器-IOS(Swift)篇 安卓端原生播放器的接入思路与ios基本一致&#xff0c;所以本篇就不废话了&#xff0c;直接上代码&#xff1a; 创建插件VideoViewPlugin实现FlutterPlugin&#xff1a; package io.flutter.plugins.videoplayer;imp…...

SerenityOS 操作系统类 Unix 操作系统

创建于2018年的SerenityOS是一个类似Unix的操作系统&#xff0c;但是带有图形化界面&#xff0c;适合X86台式计算机&#xff0c;&#xff0c;其界面类似90 年代的Win98/NT。几乎由一个人完成额操作系统。这几天其Web浏览器通过了 Acid3 浏览器。 Kernel features 具有抢占式多…...

Bean作用域和生命周期

目录 Bean作用域的例子 作用域定义 Bean的六种作用域 设置作用域 Spring的执行过程和Bean的生命周期 Spring的主要执行流程 Bean的生命周期 在上篇博客中我们使用Spring存储和获取Bean,因此Bean是Spring中最重要的资源,今天这篇博客就深入了解Bean对象 Bean作用域的例子 …...

STM32笔记

目录 1.1. 预备阶段 1.2. 单片机介绍 2. 初识STM32 2.1. STM32 1.1. 预备阶段 1.2. 单片机介绍 1.2.1. 单片机是什么 单片微型计算机(Single Chip Microcomputer)简称为单片机&#xff08;Microcontrollers&#xff09;&#xff0c;也称为微控制单元(Microcontroller Uni…...

【论文阅读】基于LevelDB的分布式数据库研究

基于LevelDB的分布式数据库研究 基于LevelDB的分布式数据库的研究与实现 - 中国知网 (cnki.net) 实现了什么&#xff1f; 基于键值型NoSQL数据库LevelDB&#xff0c;并与数据一致性算法Raft、 数据分片和负载均衡相结合&#xff0c;设计并实现基于LevelDB的分布式数据库。 主要…...

JavaScript高级 Iterator Generator

1. Iterator 1. JavaScript迭代器协议 在JavaScript中&#xff0c;迭代器也是一个具体的对象&#xff0c;这个对象需要符合迭代器协议&#xff08;iterator protocol&#xff09;&#xff1a; ◼ 迭代器协议定义了产生一系列值&#xff08;无论是有限还是无限个&#xff09;…...

数字IC手撕代码--乐鑫科技(次小值与次小值出现的次数)

前言&#xff1a;本专栏旨在记录高频笔面试手撕代码题&#xff0c;以备数字前端秋招&#xff0c;本专栏所有文章提供原理分析、代码及波形&#xff0c;所有代码均经过本人验证。目录如下&#xff1a;1.数字IC手撕代码-分频器&#xff08;任意偶数分频&#xff09;2.数字IC手撕代…...

JavaScript DOM和BOM

目录 查找html元素 1.通过id 2.通过标签名 3.通过类名 DOM 1.创建动态的HTML内容 2.修改元素内容 3.改变HTML属性 4.改变css样式 DOM事件 DOM节点 1.添加HTML元素 2.删除HTML元素 浏览器对象 1.Window对象 2.Screen对象 3.History对象 4.Location对象 5.Navi…...

JUC并发编程(二)

一、过时方法 一些不推荐使用的方法已经过时&#xff0c;容易破坏同步代码块&#xff0c;使对象的锁得不到释放&#xff0c;进而造成线程死锁 二、守护线程 默认情况下&#xff0c;Java 进程需要等待所有线程都运行结束&#xff0c;才会结束。有一种特殊的线程叫做守护线程…...

Python控制CANoe使能TestCase

前面介绍了多种CANoe配置下的dbc文件添加,常见的配置我们能够常用的就是testcase的使能和环境变量的设置,针对于环境变量的问题,我们下次再进行详聊,今天主要聊一下测试脚本的使能。在做这块之前,我们第一步就需要了解我们的测试脚本的层级是都包含有哪些? 一、测试脚本结…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...