zoukankan      html  css  js  c++  java
  • Arrays.sort()

    这里对Arrays.sort的基本用法进行一个总结说明:

    常见形式

    1、Arrays.sort(int[] a);      对数组a进行升序排序

    2、Arrays.sort(int[] a,int fromIndex, int toIndex);    对数组a的部分进行排序,这部分为下标formIdex到toIndex,这里不包括下标为toIndex的元素

    3、Arrays.sort(T[] a,int fromIndex, int toIndex, Comparator<? super T> c); 利用Comparator进行排序

    package allSort;
    
    import java.util.Arrays;
    import java.util.Comparator;
    
    public class sortCompar{
    
        public static void main(String[] args) {
            int[] a = new int[]{2,4,1,6,3,8,7,9};
    
            /*Arrays.sort(int[] a)
            这种形式对数组进行升序排序*/
            Arrays.sort(a);
    
            System.out.println("对数组进行整体排序:");
            for(int i:a){
                System.out.print(i+" ");
            }
            System.out.println();
    
            int[] b = new int[]{2,4,1,6,3,8,7,9};
    
            /*Arrays.sort(int[] a, int fromIndex, int toIndex)
            这种形式是对数组部分排序
            也就是对数组a的下标从fromIndex到toIndex-1的元素排序
            注意:下标为toIndex的元素不参与排序哦!*/
            Arrays.sort(b, 1,5);
    
            System.out.println("对数组下标从1到5排序:");
            for(int i:b){
                System.out.print(i+" ");
            }
            System.out.println();
    
            Integer[] c = new Integer[]{2,4,1,6,3,8,7,9};
            // Arrays.sort(T[] a,int fromIndex, int toIndex,  Comparator<? super T> c)
            Comparator myc = new MyComparator();
            Arrays.sort(c, myc);
            System.out.println("对数组进行整体排序:");
            for(int i:c){
                System.out.print(i+" ");
            }
            System.out.println();
    
        }
    }

    Comparator类的实现:

    package allSort;
    
    import java.util.Comparator;
    
    public class MyComparator implements Comparator<Integer> {
        @Override
        public int compare(Integer o1, Integer o2) {
            // 降序排序
            //如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值,
            //这样颠倒一下,就可以实现反向排序了
            if(o1 < o2) {
                return 1;
            }else if(o1 > o2) {
                return -1;
            }else {
                return 0;
            }
    //        return o2 - o1;  // 降序排序
    //        return o1 - o2;  // 升序排序
        }
    }

    输出:

     利用lambda进行比较

    package allSort;
    
    import java.util.Arrays;
    import java.util.Comparator;
    
    public class sortCompar{
    
        public static void main(String[] args) {
           
            // lambda
            Integer[] d = new Integer[]{2,4,1,6,3,8,7,9};
            Arrays.sort(d, ((o1, o2) -> o1 - o2));
            System.out.println("对数组进行整体升序排序:");
            for(int i:d){
                System.out.print(i+" ");
            }
            System.out.println();
            Arrays.sort(d, ((o1, o2) -> o2 - o1));
            System.out.println("对数组进行整体降序排序:");
            for(int i:d){
                System.out.print(i+" ");
            }
            System.out.println();
           
        }
    }

     在sort里直接new Comparator对象并实现比较方法

    package allSort;
    
    import java.util.Arrays;
    import java.util.Comparator;
    
    public class sortCompar{
    
        public static void main(String[] args) {
            
            // 直接定义Comparator函数形式
            Integer[] e = new Integer[]{2,4,1,6,3,8,7,9};
            // Arrays.sort(T[] a,int fromIndex, int toIndex,  Comparator<? super T> c)
            Arrays.sort(e, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o1 - o2;
                }
            });
            System.out.println("对数组进行整体升序排序:");
            for(int i:e){
                System.out.print(i+" ");
            }
            System.out.println();
        }
    }

    (比较里  返回正值的情况,则两个值交换)

  • 相关阅读:
    BZOJ 2400: Spoj 839 Optimal Marks (按位最小割)
    bzoj4873: [Shoi2017]寿司餐厅(最大权闭合子图)
    bzoj1497: [NOI2006]最大获利(最大权闭合子图)
    bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头
    bzoj1024: [SCOI2009]生日快乐
    bzoj2761: [JLOI2011]不重复数字
    bzoj1257: [CQOI2007]余数之和sum
    bzoj2456: mode
    bzoj1831: [AHOI2008]逆序对(DP+双精bzoj1786)
    bzoj2431: [HAOI2009]逆序对数列
  • 原文地址:https://www.cnblogs.com/dong973711/p/14818889.html
Copyright © 2011-2022 走看看