Java中的sort()

2023-11-01

sort的第一种格式

sort函数的基本格式(默认排序为升序排序)

Arrays.sort(数组名,起始下标,终止下标);  

例:

import java.util.*;    
import java.util.Arrays;    
public class Main {    
    public static void main(String[] args) {    

        Scanner in=new Scanner(System.in);    

        while(in.hasNext())    
        {    
            int num[]=new int[100];    

            int n;///输出n个数    
            n=in.nextInt();    

            for(int i=0;i<n;i++)    
            {    
                num[i]=in.nextInt();    

            }    

            Arrays.sort(num,0,n);///排序部分    

            for(int i=0;i<n;i++)    
            {    
                System.out.println(num[i]);    

            }    
        }    

    }    
}    

注意:这里的起始下标和终止下标一定要是整形数。不能是浮点型。
亦可以给浮点型排序
例:

import java.util.*;    
import java.util.Arrays;    
public class Main {    
    public static void main(String[] args) {    

        Scanner in=new Scanner(System.in);    

        while(in.hasNext())    
        {    
            double  num[]=new double[100];    

            int n;///输出n个数    
            n=in.nextInt();    

            for(int i=0;i<n;i++)    
            {    
                num[i]=in.nextDouble();    

            }    

            Arrays.sort(num,0,n);///排序部分    

            for(int i=0;i<n;i++)    
            {    
                System.out.println(num[i]);    

            }    
        }    

    }    
}    
sort()的第二种格式

如果一个数组初始化时已经赋值。则sort函数可以另外一种格式

Arrays.sort(数组名);   

例:

import java.util.*;    
import java.util.Arrays;    
public class Main {    
    public static void main(String[] args) {    

        Scanner in=new Scanner(System.in);    


            int num[]= {5,4,3,2,1};    

            Arrays.sort(num);    

            for(int i=0;i<5;i++)    
            {    
                System.out.println(num[i]);    

            }    


    }    
}    
sort函数中cmp函数的使用方法

cmp函数的格式

int compare(Object o1, Object o2);    

传入函数的是java中的类(java中没有结构体)
此时,sort函数的格式变为

Arrays.sort(数组名, 起始下标, 终止下标, new cmp()); 
自定义排序基本方法

int compare(Object o1, Object o2) 返回一个基本类型的整型

(1)如果要按照升序排序,
则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)

(2)如果要按照降序排序
则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)

例:(降序)

import java.util.Arrays;    
import java.util.Comparator;    
import java.util.Scanner;    
import java.util.*;      

class shu ///创建类    
{    
    int x;    
}    

class cmp implements Comparator<shu> {    
    /*  
     * 因为上面指定了类型<shu>,所以此处可以直接(shu A,shu B) 否则要写成(Object A,Object  
     * B),再强制转换成shu类型:((shu)A).x  
     */    
    public int compare(shu A, shu B) ///降序排序    
    {    
            if(A.x<B.x)     //这个就是上面的方法规则  
            {    
                return 1;    
            }    
            else if(A.x==B.x)    
            {    
                return 0;    
            }    
            else    
            {    
                return -1;    
            }    

    }    
}    

public class Main {    
    public static void main(String[] args) {    

        Scanner in = new Scanner(System.in);    

        while (in.hasNext()) {    

            shu num[] = new shu[100];///创建类数组    

            int n;    
            n = in.nextInt();    

            for (int i = 0; i < n; i++) {    

                num[i]=new shu();///这个地方容易漏    

                num[i].x = in.nextInt();    
            }    

            Arrays.sort(num, 0, n, new cmp());    

            for (int i = 0; i < n; i++) {    
                System.out.println(num[i].x);    
            }    

        }    
    }    
}    
import java.util.Arrays;    
import java.util.Comparator;    
import java.util.Scanner;    
import java.util.*;      

class shu ///创建类    
{    
    int acm;    
    int mon;    
    int rp;    
}    

class cmp implements Comparator<shu> {    
    public int compare(shu A, shu B) ///降序排序    
    {    
            if(A.acm==B.acm)    
            {    
                if(A.mon==B.mon)    
                {    
                    if(A.rp<B.rp)    
                    {    
                        return 1;    
                    }    
                    else if(A.rp==B.rp)    
                    {    
                        return 0;    
                    }    
                    else    
                    {    
                        return -1;    
                    }    
                }    
                else    
                {    
                    if(A.mon<B.mon)    
                    {    
                        return 1;    
                    }    
                    else if(A.mon==B.mon)    
                    {    
                        return 0;    
                    }    
                    else    
                    {    
                        return -1;    
                    }    
                }    
            }    
            else    
            {    
                if(A.acm<B.acm)    
                {    
                    return 1;    
                }    
                else if(A.acm==B.acm)    
                {    
                    return 0;    
                }    
                else    
                {    
                    return -1;    
                }    
            }    

    }    
}    

public class Main {    
    public static void main(String[] args) {    

        Scanner in = new Scanner(System.in);    

        while (in.hasNext()) {    

            shu num[] = new shu[1005];///创建类数组    

            int n;    
            n = in.nextInt();    

            for (int i = 0; i < n; i++) {    

                num[i]=new shu();///这个地方容易漏    

                num[i].acm = in.nextInt();    
                num[i].mon = in.nextInt();    
                num[i].rp  = in.nextInt();    
            }    

            Arrays.sort(num, 0, n, new cmp());    

            for (int i = 0; i < n; i++) {    
                System.out.println(num[i].acm+" "+num[i].mon+" "+num[i].rp);    
            }    

        }    
    }    
}    
//int compare(Object o1, Object o2) 返回一个基本类型的整型    
//如果要按照升序排序,    
//则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)    
//如果要按照降序排序    
// 则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)    

字典序排序

import java.util.Arrays;    
import java.util.Comparator;    
import java.util.Scanner;    
import java.util.*;      

class shu ///创建类    
{    
    String name;///比较时用String    
    int mon;    
    int hunt;    
}    

class cmp implements Comparator<shu> {    
    public int compare(shu A, shu B)     
    {    
            if(A.hunt==B.hunt)    
            {    
                if(A.mon==B.mon)    
                {    
                    int flag=(A.name).compareTo(B.name);///按字典序排序    
                    if(flag==0)    
                    {    
                        return 0;    
                    }    
                    else if(flag<0)    
                    {    
                        return -1;    
                    }    
                    else    
                    {    
                        return 1;    
                    }    
                }    
                else    
                {    
                    if(A.mon==B.mon)    
                    {    
                        return 0;    

                    }    
                    else if(A.mon<B.mon)    
                    {    
                        return -1;    
                    }    
                    else    
                    {    
                        return 1;    
                    }    

                }    
            }    
            else    
            {    

                if(A.hunt==B.hunt)    
                {    
                    return 0;    

                }    
                else if(A.hunt<B.hunt)    
                {    
                    return 1;    
                }    
                else    
                {    
                    return -1;    
                }    
            }    


    }    


}    

public class Main {    
    public static void main(String[] args) {    

        Scanner in = new Scanner(System.in);    

        while (in.hasNext()) {    

            shu num[] = new shu[100005];///创建类数组    

            int n;    
            n = in.nextInt();    

            for (int i = 0; i < n; i++) {    

                num[i]=new shu();///这个地方容易漏    

                num[i].name=in.next();    
                num[i].hunt=in.nextInt();    
                num[i].mon=in.nextInt();    
            }    

            Arrays.sort(num, 0, n, new cmp());    

            for (int i = 0; i < n; i++) {    
                System.out.println(num[i].name);    
            }    

        }    
    }    
}    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中的sort() 的相关文章

  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会

随机推荐

  • spring-security--基础--5.1--ACL--介绍

    spring security 基础 5 1 ACL 介绍 代码位置 https gitee com DanShenGuiZu learnDemo tree master spring security learn 1 介绍 ACL 访问控
  • JDBC(数据库连接)——url写法

    JDBC的URL 协议名 子协议名 数据源名 协议名 总是 jdbc 子协议名 数据库类型协议 数据源名 用户 数据库名等信息 常见的数据库连接 oracle 驱动 oracle jdbc driver OracleDriver URL j
  • 解析智能扫地机器人中蕴含的情感元素

    在新一轮新冠疫情爆发后 大众宅在家的时候也变多起来 对于居家清洁的需求也越来越旺盛 人们希望可以从日常的繁琐的家务中解放出来 其中智能扫地机器人就占有一席之地 在市场需求持续走高的催生下 技术也在不断革新换代 根据数据显示 2021年前11
  • js数组处理方法总结slice、join、filter、map、indexOf、reduce、reduceRight等

    归纳总结数组的处理方法如下 1 splice 功能 1 删除 从数组中删除元素 两个参数 第一个参数 要删除元素的起始位置 第二个参数 要删除的项数 2 添加 插入元素到数组中 三个参数 第一个参数 起始位置 第二个参数 0 第三个参数 插
  • 【论文速递】TPAMI2022 - 自蒸馏:迈向高效紧凑的神经网络

    论文速递 TPAMI2022 自蒸馏 迈向高效紧凑的神经网络 论文原文 Self Distillation Towards Efficient and Compact Neural Networks 获取地址 https ieeexplor
  • virsh help domain命令内容解析

    简介 这段时间学习热迁移 要不断的在qemu monitor和libvirt中调转使用命令 故整理virsh命令 这篇是第一篇 整理virsh help domain相关内容 span style color 656565 span sty
  • 相约清华!AI药物研发大赛总决赛明日开幕

    2022年 百度飞桨联合清华大学药学院 筹备建设 AI 药学 产学研融合创新基地 推出了一系列AI 生物计算前沿课程和人才培养计划 今年5月 百度飞桨联合清华大学药学院 百度智能云和临港实验室 共同发起了首届全球AI药物研发算法大赛 并得到
  • mac如何卸载python2.7_mac python环境的安装与卸载

    换电脑之前并没有了解很多mac 所以习惯性的安装软件都是官网或者appstore下载来安装的 so 我下载了python2 7 并安装了 后来学习的视频是3 6的版本 又下载的3 6的版本来安装 过程中知道自带python2 7版本 也看到
  • 踩坑系列—mybatis查询没有数据时返回的list是null还是空集合?

    场景 根据多个条件查询 返回list集合数据 代码 第1步 根据页面多个条件查询 List list userDao queryOrders queryParams if null list return null 第2步 有数据再追加其他
  • Photoshop 通道讲解

    我常常问我的学生 什么是Photoshop最重要 不可或缺的功能 很多人的回答是图层 Layer 其实在Photoshop3 0之前根本没有图层的功能 在Photoshop的领域中 最重要的功能是选取范围 正确的运用选取范围 才能够做出精准
  • 从CSV文件导入Hive出现中文乱码问题解决

    关于HIVE中文乱码问题的解决办法 网上有很多帖子 然而很多都是基于LINUX终端显示字符的修改 其实上对于一些条件下的HIVE中文乱码问题是无法解决的 如从CSV文件导入到HIVE中出现的中文乱码问题 大家都知道 HIVE原生的字符编码是
  • 区块链密码学之对称加密

    前言 对称加密 顾名思义就是公钥和私钥都是同一个 只有一把密钥 那么密钥的共享就需要特别注意 容易泄露 但是由于它的加密效率高 速度快 占用空间小 主要用在大量数据的加密 往往需要提前分发密钥 对称密码从实现上可以分为两种 分组密码和序列密
  • 查询Windows默认编码格式

    开始 gt cmd gt chcp 然后显示一个数字 如936 则代表是GBK简体中文
  • unity生成透明背景的截图,截图背景图透明,UGUI scrollview滑动的时候不能遮罩3d模型

    转载 Unity3D Unity3D 摄像机带透明截图 静茹 鱼 博客园 using System using UnityEngine using System IO public class CropPicture MonoBehavio
  • Sonarqube安装插件报错An error has occurred. Please contact your administrator

    报错信息 Sonarqube安装插件时提示 An error has occurred Please contact your administrator 解决方法 1 查询报错日志 使用docker logs查询Sonarqube日志 插
  • jpress代码审计分享

    声明 出品 先知社区 ID 1871162774168111 以下内容 来自先知社区的1871162774168111作者原创 由于传播 利用此文所提供的信息而造成的任何直接或间接的后果和损失 均由使用者本人负责 长白山攻防实验室以及文章作
  • 【转载】一些比较好的电子资源网站

    SkyEye Project SkyEye是一个开源软件 opensource software 项目 中文名字是 天目 SkyEye的目标是在通用的Linux和Windows平台实现一个模拟集成开发环境 模拟基于ARM的嵌入式计算机系统
  • 《Linux C++》线程池

    为什么使用线程池 线程池的出现正是着眼于减少线程本身带来的开销 避免 即时创建 即时销毁 线程池应用场合 像大多数网络服务器 包括Web服务器 Email服务器以及数据库服务器处理数目巨大的连接请求 但处理时间却相对较短 并且实时性要求比较
  • 硬见小百科」这些PCB布局布线规则,你了解多少?

    元器件布局的10条规则 遵照 先大后小 先难后易 的布置原则 即重要的单元电路 核心元器件应当优先布局 布局中应参考原理框图 根据单板的主信号流向规律安排主要元器件 元器件的排列要便于调试和维修 亦即小元件周围不能放置大元件 需调试的元 器
  • Java中的sort()

    sort的第一种格式 sort的第二种格式 sort函数中cmp函数的使用方法 自定义排序基本方法 sort的第一种格式 sort函数的基本格式 默认排序为升序排序 Arrays sort 数组名 起始下标 终止下标 例 import ja