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