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

面向对象程序设计之sort排序

目录

java

升序 

降序 

c# 

升序 

倒序

小结 


敲过排序算法的都会的,Sort排序与compareTo的改写。

java

升序 

一般自带的sort方法就是升序的。

Arrays.sort(arr);//传入要排序的数组,默认升序
Collections.sort(list);//传入要排序的集合类,默认升序
降序 

数组的可以传多个参数表示倒序,要了解一下比较器的规则。

//Arrays.sort(arr, new Comparator());第一个参数是待排序数组,第二个参数是改写的比较器 
Arrays.sort(arr, new Comparator());//改写Comparator()
//o1小于o2返回正值,o1大于o2返回负值,颠倒一下,即可实现降序排序
public int compare(Integer o1, Integer o2) {return o2 - o1;
}//数据类型如int、‌double等不支持Comparable接口,可以通过包装类如Integer‌
Arrays.sort(arr, Collections.reverseOrder());//Collections要用包装类
Arrays.sort(arr,(s1,s2)->s2.compareTo(s1));//lambda 表达式调用
Arrays.sort(arr,(o1,o2)->o2 - o1);//通过lambda 表达式的返回值实现降序排序,也是用包装类Integer//Arrays.sort(arr, start, end, new Comparator());int类型可以用四个参数的,注意中间两个参数是左开右闭的
Arrays.sort(a,0,cnt,(o1,o2) -> new Double(o2.n).compareTo(new Double(o1.n)));

集合类跟数组差不多,可以用方法、内部类或lambda 表达式回调。

//Collections.sort(arr, new Comparator());集合类类似,比较器也可以直接写方法进参数
Collections.sort(list, new Comparator<Integer>() {public int compare(Integer o1, Integer o2) {return o2 - o1;}
});//使用Collections的sort方法,重写compare方法

c# 

升序 

自带的Sort也是默认升序的,但注意看准参数,不要混淆。

Array.Sort(arr);//传入要排序的数组,默认升序,注意是Array不是Arrays
l.Sort();//传入要排序的集合类,默认升序,l是List集合类的实例化对象
倒序

可以写一个方法,类似java的比较器,排前面后面多看看就孰能生巧了。

//编写倒序的Sort方法
int Sort(s1,s2)
{
//以后面传入的数s2为基准,s1在s2的前面还是后面,即排在左边还是右边if (s1>s2){return -1;//返回一个负数,表示s1在s2的左边(s1是较大数)//return s2-s1;}else if (s1<s2){return 1;//返回一个正数,表示s1在s2的右边(s1是较小数)//return s1-s2;}else{return 0;          }
};

当然,c#的数组集合类倒序实现还简单一点,实在理解不了把下面常见的记熟了,记住倒序倒一下即可。

//升序后直接倒
Array.Reverse(arr);
//lambda 表达式调用
Array.Sort(arr, (s1, s2) => s2.CompareTo(s1));
//lambda 表达式调用,小白式读法,如果s1大于s2,返回一个负数表示s1在s2的左边(s1是较大数),否则返回一个正数表示s1在s2的右边(s1是较小数)
Array.Sort(arr, (s1, s2) => s1 > s2 ? -1 : 1);
//取相反或倒过来
l.Sort((x, y) => -x.CompareTo(y));
//注意别被绕晕,s1、s2倒一下就刚好对应倒序
l.Sort(s1, s2) => s2.n > s1.n ? 1 : -1;

小结 

在处理简单的升序排序中,java跟c#的sort的理解助你勇闯排序算法,手撕排序。

相关文章:

面向对象程序设计之sort排序

目录 java 升序 降序 c# 升序 倒序 小结 敲过排序算法的都会的&#xff0c;Sort排序与compareTo的改写。 java 升序 一般自带的sort方法就是升序的。 Arrays.sort(arr);//传入要排序的数组&#xff0c;默认升序 Collections.sort(list);//传入要排序的集合类&am…...

ARM学习(29)NXP 双coreMCU MCXN94学习

笔者来介绍一下NXP 双core板子 &#xff0c;新系列的mcxn94 1、MCX 新系列介绍 恩智浦 MCU 系列产品包括 Kinetis 、LPC 系列&#xff0c;以及 i.MX RT 系列&#xff0c;现在又推出新系列产品 MCX 产品&#xff0c;包括四个系列&#xff0c;目前已经发布产品的是 MCX N 系列。…...

视频剪辑免费素材哪里能找到?

在创作视频时&#xff0c;素材的选择至关重要。为了让您的项目更具吸引力和专业性&#xff0c;我整理了8个剪辑必备素材网站&#xff0c;它们提供了丰富多样的资源&#xff0c;从高清视频到优质音乐&#xff0c;应有尽有。让我们一起探索这些资源丰富、质量上乘的平台&#xff…...

多线程为什么是你必需要掌握的知识

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、多线程是什么&#xff1f;二、多线程学习的必要性1.提升代码性能2.更优秀的软件设计和架构3.更好的工作机会 总结 前言 相信每一位开发者&#xff0c;都应…...

转转上门履约服务拆分库表迁移实践

文章目录 1 背景2 数据迁移方案2.1 方案一&#xff1a;双写新旧库2.2 方案二&#xff1a;灰度开关切换新旧库 3 迁移细节3.1 业务代码改造3.2 数据同步3.3 数据一致性校验 4 总结5 参考资料 1 背景 随着业务不断发展&#xff0c;一个服务中部分功能模块适合沉淀下来作为通用的…...

upload-labs 1-19关 攻略 附带项目下载地址 小白也能看会

本文章提供的工具、教程、学习路线等均为原创或互联网收集&#xff0c;旨在提高网络安全技术水平为目的&#xff0c;只做技术研究&#xff0c;谨遵守国家相关法律法规&#xff0c;请勿用于违法用途&#xff0c;如有侵权请联系小编处理。 环境准备&#xff1a; 1.靶场搭建 下…...

如何设置SQL Server的端口:详细步骤指南

如何设置SQL Server的端口&#xff1a;详细步骤指南 在SQL Server中&#xff0c;配置端口是确保数据库服务能够正确通信的重要步骤。无论是为了提高安全性还是满足特定的网络配置需求&#xff0c;正确设置SQL Server的端口都是必要的。本文将详细介绍如何设置SQL Server的端口…...

昇思25天学习打卡营第16天|Diffusion扩散模型,DCGAN生成漫画头像

Diffusion扩散模型 关于扩散模型&#xff08;Diffusion Models&#xff09;有很多种理解&#xff0c;本文的介绍是基于denoising diffusion probabilistic model &#xff08;DDPM&#xff09;&#xff0c;DDPM已经在&#xff08;无&#xff09;条件图像/音频/视频生成领域取得…...

【吊打面试官系列-Dubbo面试题】Dubbo SPI 和 Java SPI 区别?

大家好&#xff0c;我是锋哥。今天分享关于 【Dubbo SPI 和 Java SPI 区别&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Dubbo SPI 和 Java SPI 区别&#xff1f; JDK SPI JDK 标准的 SPI 会一次性加载所有的扩展实现&#xff0c;如果有的扩展吃实话很耗时&…...

7.31 Day13 网络散记(http,https...)

http固定对应80端口 https固定对应443端口...

LumaLabs 用例和应用分析

介绍 LumaLabs AI 是一家尖端技术公司&#xff0c;通过创新使用人工智能 (AI) 和神经渲染技术&#xff0c;彻底改变了 3D 内容创作领域。本报告深入探讨了 LumaLabs AI 的各种用例和应用&#xff0c;重点介绍了其在不同行业中的能力、优势和潜在影响。 LumaLabs AI 概述 LumaL…...

leetcode88.合并两个有序数组(简单题!)

思路&#xff1a;合并两个数组&#xff0c;再进行排序&#xff08;利用快速排序&#xff09; class Solution(object):def quicksort(self, num, i, j):if i>j: # 跳出循环的条件要出来return left iright jtemp num[i]while left < right:while left < right and…...

鸿蒙(HarmonyOS)DatePicker+TimePicker时间选择控件

一、操作环境 操作系统: Windows 11 专业版、IDE:DevEco Studio 3.1.1 Release、SDK:HarmonyOS 3.1.0&#xff08;API 9&#xff09; 二、效果图 可实现两种选择方式&#xff0c;可带时分选择&#xff0c;也可不带&#xff0c;使用更加方便。 三、代码 SelectedDateDialog…...

2024年和2025年CFA FRM CAIA ESG自己整理的资料

本人金融女一枚&#xff0c;CFA FRM CAIA ESG已过&#xff0c;研究生学历&#xff0c;职位投资经理。从事金融快5年了&#xff0c;月薪30000&#xff0c;周未双休五险一金。工作很充实也很累&#xff0c;每天失眠&#xff0c;思考了很久&#xff0c;还是决定离职了&#xff0c;…...

AMD第二季度财报:数据中心产品销售激增,接近总收入一半

#### 财报亮点 7月30日&#xff0c;AMD公布了截至6月29日的第二季度财务业绩&#xff0c;利润超过了华尔街的预期。根据TechNews的报道&#xff0c;最值得注意的是&#xff0c;AMD现在近一半的销售额来自于数据中心产品&#xff0c;而非传统的PC芯片、游戏主机或是工业与汽车嵌…...

ThreadLocal详解及ThreadLocal源码分析

提示&#xff1a;ThreadLocal详解、ThreadLocal与synchronized的区别、ThreadLocal的优势、ThreadLocal的内部结构、ThreadLocalMap源码分析、ThreadLocal导致内存泄漏的原因、要避免内存泄漏可以用哪些方式、ThreadLocal怎么解决Hash冲突问题、避免共享的设计模式、ThreadLoca…...

FastGPT、Dify、Coze产品功能对比分析

在当前的人工智能领域&#xff0c;模型接入、应用发布、应用构建、知识库和工作流编排等功能是衡量一个AI平台综合能力的重要指标。本文将对FastGPT、Dify和Coze这三款产品的功能进行详细对比分析&#xff0c;以帮助用户更好地了解它。 订阅模式及市场概况 在订阅模式及市场概…...

【Linux】缓冲区的理解

目录 一、实验现象二、初步认知缓冲区2.1 缓冲区的刷新策略2.2 缓冲区在哪里 三、缓冲区模拟实现四、再次全面理解缓冲区4.1 用户强制刷新缓冲区(fflush/fsync) 一、实验现象 我们先来看一个现象&#xff1a; 在显示器中打印内容时&#xff0c;fprintf先打印出来&#xff0c;w…...

基于单片机的电梯控制系统的设计

摘 要: 本文提出了一种基于单片机的电梯控制系统设计 。 设计以单片机为核心&#xff0c;通过使用和设计新型先进的硬件和控制程序来模拟和控制整个电梯的运行&#xff0c;在使用过程中具有成本低廉、 维护方便、 运行稳定 、 易于操作 、 安全系数高等优点 。 主要设计思路是…...

IP-GUARD文档云备份服务器迁移数据操作说明

一、功能简介 使用文档云备份过程可能出现需要迁移旧数据到新目录的情况(如一开始存储目录设置 不合理,之后变更存储目录),下面介绍迁移备份数据到新目录的方法,迁移后可正常查看、 下载、删除原备份文件。 二、同一计算机上迁移存储目录 当仅需要将存储目录迁移到同一计…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...