在java中可以对数组排序的类_Java中Arrays类进行数组排序

Java中Arrays类实际是一个实现对数组操作的各种方法的类,可以实现对数组的排序和搜索,数组的比较和对数组增加元素,数组的拷贝和数据转换为字符串的功能。今天我们就来说说Arrays.sort()对数组进行排序的规则。

1.对基本类型的数组进行排序

(1)Arrays类中的sort()使用的是经过调优的快速排序算法;

(2)对于int[],double[],char[]等基本数据类型的数组,Arrays类只提供了默认的升序排列,并没有提供相应的降序排列方法;

数组排序函数原型:

static void sort(int[] a)  对指定的int型数组按数字升序进行排序

static void sort (int[] a,int fromIndex,int toIndex)  对指定int型数组的指定范围按数字升序进行排序

例如:

520df41c212e6328873a03fca9567162.png

输出结果:

4c6d7be18a7a4686e02e727d61dfa8b3.png

Arrays.sort()底层实现采用了快速排序。快速排序的思想是:首先选取一个基准,这个基准可以是第一个数字也可以是任意数值,然后用两个指针left和right分别指向所要排序的数组的0号位置和length-1号位置,在保证left

2.对复合数据类型的数据的排序

函数原型:

public static void sort(T[] a,Comparator c)   根据指定比较器产生的顺序对指定对象数组进行排序

public static void sort(T[] a,int fromIndex,int toIndex,Comparator c)   根据指定比较器产生的顺序对指定对象数组的指定范围进行排序

这两个排序算法是经过调优的归并排序算法

例如:

eca5aea7d76ad756ad8c310335e75aa3.png

输出结果:

既然这里用到了Comparator比较器对象,那我们就来说说Java中的两种比较器Comparable和Comparator

区别:①Comparable位于java.lang包下,Comparator位于java.util包下;

②实现Comparable接口要重写ComparetTo()方法,实现Comparator接口需要重写compare()方法;

③Comparable接口将比较代码嵌入需要进行比较的类的自身代码中,Comparator接口要在一个单独的类中实现比较;

④如果前期类设计没有考虑到类的比较问题而没有实现Comparable接口,后期可以通过Comparator接口来实现算法进行排序;

⑤Comparable接口强制进行自然排序,Comparator接口不强制自然排序,可以指定排序

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值