Arrays.sort()自定义排序的实现

1. Arrays.sort(T[] a)是对数组元素按字典序进行升序排列

import java.util.*;

public class Main {
    public static void main(String[] args){
        Integer[] arr = {5,4,7,9,2,12,54,21,1};
        //升序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

output:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo }

[1, 2, 4, 5, 7, 9, 12, 21, 54]

2. Arrays.sort(T[] a, Comparator<? Super T> c)用Comparator接口实现自定义排序规则

import java.util.*;

public class Main {
    public static void main(String[] args){
        Integer[] arr = {5,4,7,9,2,12,54,21,1};
        //降序
        Arrays.sort(arr, new Comparator<Integer>() {
            public int compare(Integer a, Integer b) {
                return b-a;
            }
        });
        System.out.println(Arrays.toString(arr));
    }
}

output:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo }

[54, 21, 12, 9, 7, 5, 4, 2, 1]

3. Arrays.sort(T[] a, int fromIndex, int toIndex)实现对数组中的一部分进行排序

 对数组a中,index属于[fromIndex, toIndex)的元素进行排序

 同样,Arrays.sort(T[] a, int fromIndex, int toIndex, Comparator<? Super T> c)可实现自定义排序规则

import java.util.*;

public class Main {
    public static void main(String[] args){
        Integer[] arr = {5,4,7,9,2,12,54,21,1};
        //局部排序-升序
        Arrays.sort(arr, 2, 7);
        System.out.println(Arrays.toString(arr));
    }
}

output:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo }

[5, 4, 2, 7, 9, 12, 54, 21, 1]

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo }

原文地址:https://www.cnblogs.com/macyzhang/p/9861302.html

时间: 2024-10-11 00:59:31

Arrays.sort()自定义排序的实现的相关文章

Lua Sort 自定义排序的注意事项(转)

原帖地址:https://blog.csdn.net/noetic_wxb/article/details/80748113 要求传入两个相同的数时要返回false, 换句话说,下面的函数用<=做比较,是错误的. local compare_func = function(v1, v2) return v1 <= v2   -- error end 测试 local t = {4,3,2,1}table.sort(t,compare_func)for k, v in ipairs(t) do 

c++ stl sort 自定义排序函数cmp要遵循 strict weak ordering

满足strict weak ordering的运算符能够表达其他所有的逻辑运算符(logical operator): <(a, b)  : (a < b) <=(a, b): !(b < a) ==(a, b): !(a < b) && !(b < a) !=(a, b) : (a < b) || (b < a) >(a, b)  : (b < a) >=(a, b): !(a < b) 引用自https://www

JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序

一.描述 自定义的类要按照一定的方式进行排序,比如一个Person类要按照年龄进行从小到大排序,比如一个Student类要按照成绩进行由高到低排序. 这里我们采用两种方式,一种是使用Comparable接口:让待排序对象所在的类实现Comparable接口,并重写Comparable接口中的compareTo()方法,缺点是只能按照一种规则排序. 另一种方式是使用Comparator接口:编写多个排序方式类实现Comparator接口,并重写新Comparator接口中的compare()方法,

31、Arrays数组排序(续)——自定义排序

自定义的类要按照一定的方式进行排序,比如一个Person类要按照年龄进行从小到大排序,比如一个Student类要按照成绩进行由高到低排序. 这里我们采用两种方式,一种是使用Comparable接口:让待排序对象所在的类实现Comparable接口,并重写Comparable接口中的compareTo()方法,缺点是只能按照一种规则排序. 另一种方式是使用Comparator接口:编写多个排序方式类实现Comparator接口,并重写新Comparator接口中的compare()方法,在调用Ar

关于使用Java中Arrays.sort()方法TLE

最近一直在练用Java写题(链接),今天无意发现一道很简单的二分题,我一开始是直接开int[]数组调用Arrays.sort()去排序,没想到TLE了,原来是因为jdk中对于int[]的排序是使用快速排序的,jdk中相关调用源码如下 1 public static void sort(int[] a) { 2 DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0); 3 } 而测试数据恰好有反快排的数据,因此被卡. 解决方法也不少,比较简单

java.util.Arrays.sort两种方式的排序(及文件读写练习)

import java.io.*; import java.util.*; public class SortTest{ public static void main(String args[]) throws IOException, ClassNotFoundException { FileReader InWord = new FileReader(new File("words.txt")); BufferedReader in = new BufferedReader(In

定制对ArrayList的sort方法的自定义排序

java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数 示例: // 外部类的方式 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.uti

JAVA数组与排序(Arrays.sort(数组名))

import java.util.Scanner; import java.util.Arrays; public class ArrayTest03 { public static void main(String[] args) { System.out.println("请输入数组的长度:"); InPut in = new InPut();                                      //调用类InPut int n =in.in_put();  

SDUT 1591-交叉排序(Arrays.sort)

交叉排序 Time Limit: 1000ms   Memory limit: 32768K  有疑问?点这里^_^ 题目描述 输入N个数,把所有奇数位置上的数从小到大排序,把偶数位置上的数从大到小排序. 输入 输入的第一行是一个正整数N(2<=N<=100). 第二行是N个用空格隔开的整数. 输出 输出只有一行N个数,是按要求排序后的序列,用空格隔开. 示例输入 6 1 2 3 4 5 6 示例输出 1 6 3 4 5 2 java的Arrays类居然只有升序排序..sad import j