zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    17373194陈丛文第一次项目作业
    软工第一次博客作业
    软工热身作业
    OO第4次博客作业
    OO第三次博客作业
    oo第二次总结作业
    OO第一次总结作业
    UML系列——OO Unit4分析和学期总结
    JML规格编程系列——OO Unit3分析和总结
    电梯系列——OO Unit2分析和总结
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/6657017.html
Copyright © 2011-2022 走看看