📜  用Java排序

📅  最后修改于: 2020-03-18 13:46:57             🧑  作者: Mango

在Java中有两种内置的方法可以进行排序。

  1. Arrays.Sort():适用于也可以是原始数据类型的数组。
    // Java代码,展示如何使用Arrays.sort()
    // 默认升序排列
    import java.util.Arrays;
    public class GFG {
        public static void main(String[] args)
        {
            int[] arr = { 13, 7, 6, 45, 21, 9, 101, 102 };
            Arrays.sort(arr);
            System.out.printf("调整后的 arr[] : %s",
                              Arrays.toString(arr));
        }
    }

    输出:

    调整后的 arr[] : [6, 7, 9, 13, 21, 45, 101, 102]
  2. Collections.sort():适用于集合对象,例如ArrayList和LinkedList。
    // Java代码,展示集合对象的Collections.sort()
    import java.util.*;
    public class GFG {
        public static void main(String[] args)
        {
            // 创建一个string的list
            ArrayList al = new ArrayList();
            al.add("芒果 For 芒果");
            al.add("Friends");
            al.add("Dear");
            al.add("Is");
            al.add("Superb");
            /* Collections.sort method is sorting the
            elements of ArrayList in ascending order. */
            Collections.sort(al);
            // Let us print the sorted list
            System.out.println("新list,构造时使用了函数"
                               + " Collection.sort() :\n" + al);
        }
    }

    输出:

    新list,构造时使用了函数 Collection.sort() :
    [Dear, Friends, 芒果 For 芒果, Is, Superb]
  3. Java在sort()中使用哪种排序算法?
    以前,Java的Arrays.sort方法使用Quicksort来存储基元数组,并使用Merge sort来处理数组对象。在Java的最新版本中,Arrays.sort方法和Collection.sort()使用Timsort。
  4. 默认情况下,按照哪个顺序完成?
    默认情况下,它按升序排序。
  5. 如何按降序排列数组或列表?
    可以借助Collections.reverseOrder()来完成。例:
    1. 对于Arrays.sort()
      // Java使用Arrays.sort()对Array进行降序排列
      import java.util.Arrays;
      import java.util.Collections;
      public class GFG {
          public static void main(String[] args)
          {
              // 注意Collections.reverseOrder不能在原始数据类型上使用.
              Integer[] arr = { 13, 7, 6, 45, 21, 9, 2, 100 };
              // Sorts arr[] in descending order
              Arrays.sort(arr, Collections.reverseOrder());
              System.out.printf("调整后的 arr[] : %s",
                                Arrays.toString(arr));
          }
      }

      输出:

      调整后的 arr[] : [100, 45, 21, 13, 9, 7, 6, 2]
    2. 对于Collections.sort()
      // Java程序,展示如何使用Collections.sort()进行降序排列.
      import java.util.*;
      public class GFG {
          public static void main(String[] args)
          {
              // 创建一个string的list
              ArrayList al = new ArrayList();
              al.add("芒果 For 芒果");
              al.add("Friends");
              al.add("Dear");
              al.add("Is");
              al.add("Superb");
              /* Collections.sort对ArrayList进行升序排列. */
              Collections.sort(al, Collections.reverseOrder());
              // Let us print the sorted list
              System.out.println("新list,构造时使用了函数"
                                 + " Collection.sort() :\n" + al);
          }
      }

      输出:

      新list,构造时使用了函数 Collection.sort() :
      [Superb, Is, 芒果 For 芒果, Friends, Dear]

如何仅对子数组排序?
例:

// Java代码,展示使用Arrays.sort()对子数组排序
import Java.util.Arrays;
public class GFG {
    public static void main(String[] args)
    {

        int[] arr = { 13, 7, 6, 45, 21, 9, 2, 100 };
        // 对index是1到4的子数组排序
        Arrays.sort(arr, 1, 5);
        System.out.printf("排序后的 arr[] : %s",
                          Arrays.toString(arr));
    }
}

输出:

排序后的 arr[] : [13, 6, 7, 21, 45, 9, 2, 100]