Java Arrays.sort相關用法與重載


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM