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