Java Arrays.sort相关用法与重载

本文详细介绍了Java中Arrays.sort()函数的用法及其重载版本,包括如何通过自定义Comparator来实现不同排序需求的方法,并解释了其内部实现原理及时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java Arrays.sort()

Java中的数组排序函数,

头文件
import java.util.Arrays;

相关API
Arrays.sort(arys[])
Arrays.sort(arys[],int from,int to)   //排序范围:from-->to-1
Arrays.sort(arys[],new MyComparator())
Arrays.sort(arys[],int from,int to,new MyComparator())
sort重载
例如存在定义
private static class node{
        int x,y;
    };

可以利用Comparator接口实现不同的排序效果

//将x从大到小排,如果相同,就将y从大到小排
private static class cmp1 implements Comparator<node>{
       @Override
       public int compare(node a,node b){
            if(a.x == b.x){
                            if(a.y==b.y) return 0;
                            return a.y<b.y?1:-1;
                    }
                if(a.x==b.x) return 0;
                return a.x<b.x?1:-1;
          }
    }
//将x从小到大排,如果相同,就将y从小到大排
private static class cmp2 implements Comparator<node>{
       @Override
       public int compare(node a,node b){
            if(a.x == b.x){
                            if(a.y==b.y) return 0;
                            return a.y>b.y?1:-1;
                    }
                if(a.x==b.x) return 0;
                return a.x>b.x?1:-1;
          }
    }
相关的实现原理,可以这么理解:
Arrays中封装的sort函数默认是从小到大排序的,我们在cmp1中在a.y<b.y时返回1,a.y>b.y>时返回-1。
使得程序认为y值越小代表这个node对象越大,而程序是默认把对象大的放在数组>后面,此时它把小的当成了大的,因此我们实现了数组的从大到小的排序。
sort的时间复杂度

Arrays.sort()使用了归并排序算法,时间复杂度为O(nlogn)

练习:

一道贪心题,需要用到排序:http://www.cnblogs.com/zsyacm666666/p/6656859.html

转载于:https://www.cnblogs.com/zsyacm666666/p/6657017.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值