zoukankan      html  css  js  c++  java
  • Java中的数组排序

    Java中的数组排序,一般是利用Arrays.sort(),这个方法是经过优化的快速排序。在Arrays种有多中形式的重载,在这里就不一一列举了。

    数组排序的种类:

    1.非降序排序, 非升序排序(就排序后数组元素排列的结果而言)

    2.基本类型数据的排序,类类型数据的排序(就排序的对象而言)

    排序示例:

    int型数组的非降序排序:

     1 package sort;
     2 
     3 import java.util.Arrays;
     4 
     5 public class Main {
     6     public static void displayArray(int[] array) {
     7         for (int i: array) {
     8             System.out.print(i + " ");
     9         }
    10         System.out.println();
    11     }
    12     
    13     public static void main(String[] args) {
    14         int[] arr = new int[]{43, 84, 3, 8, 4, 7, 3, 75, 82, 748, 35};
    15         
    16         System.out.println("排序前:");
    17         displayArray(arr);
    18         
    19         Arrays.sort(arr);
    20         
    21         System.out.println("排序后:");
    22         displayArray(arr);
    23     }
    24 }
    View Code

    运行结果如下:

    int型数组的非升序排序:

     1 package sort;
     2 
     3 import java.util.Arrays;
     4 import java.util.Comparator;
     5 
     6 public class Main {
     7     public static void displayArray(Integer[] array) {
     8         for (int i: array) {
     9             System.out.print(i + " ");
    10         }
    11         System.out.println();
    12     }
    13     
    14     public static void main(String[] args) {
    15         Integer[] arr = new Integer[]{43, 84, 3, 8, 4, 7, 3, 75, 82, 748, 35};
    16         
    17         System.out.println("排序前:");
    18         displayArray(arr);
    19         
    20         Arrays.sort(arr, new JX());
    21         
    22         System.out.println("排序后:");
    23         displayArray(arr);
    24     }
    25 }
    26 
    27 class JX implements Comparator<Integer> {
    28     @Override
    29     public int compare(Integer o1, Integer o2) {
    30         if (o1 <= o2) {
    31             return 1;
    32         }
    33         return -1;
    34     }
    35 }
    View Code

    运行结果如下:

    类类型的非降序排序:

     1 package sort;
     2 
     3 import java.util.Arrays;
     4 
     5 public class Main {
     6     public static void displayArray(Student[] student) {
     7         for (Student s : student) {
     8             System.out.println(s);
     9         }
    10     }
    11     
    12     public static void main(String[] args) {
    13         Student[] s = new Student[5];
    14         s[0] = new Student("wwww", 20, 2.34);
    15         s[1] = new Student("kkkk", 2, 2.34);
    16         s[2] = new Student("pppp", 25, 3.34);
    17         s[3] = new Student("hhhh", 12, 4.34);
    18         s[4] = new Student("jjjj", 10, 5.34);
    19         
    20         System.out.println("排序前:");
    21         displayArray(s);
    22         
    23         Arrays.sort(s);
    24         
    25         System.out.println("排序后:");
    26         displayArray(s);
    27     }
    28 }
    29 
    30 /*
    31  * 根据年龄进行非降序排序
    32  */
    33 class Student implements Comparable<Student> {
    34     private String name;
    35     private int age;
    36     private double height;
    37     
    38     public Student(String name, int age, double height) {
    39         this.name = name;
    40         this.age = age;
    41         this.height = height;
    42     }
    43     
    44     @Override
    45     public int compareTo(Student o) {
    46         if (this.age <= o.age) {
    47             return -1;
    48         }
    49         return 1;
    50     }
    51     
    52     public String toString() {
    53         return "Name: " + name + " Age: " + age + " Height: " + height;
    54     }
    55 }
    View Code

    运行结果如下:

    类类型的非升序排序:

     1 package sort;
     2 
     3 import java.util.Arrays;
     4 
     5 public class Main {
     6     public static void displayArray(Student[] student) {
     7         for (Student s : student) {
     8             System.out.println(s);
     9         }
    10     }
    11     
    12     public static void main(String[] args) {
    13         Student[] s = new Student[5];
    14         s[0] = new Student("wwww", 20, 2.34);
    15         s[1] = new Student("kkkk", 2, 2.34);
    16         s[2] = new Student("pppp", 25, 3.34);
    17         s[3] = new Student("hhhh", 12, 4.34);
    18         s[4] = new Student("jjjj", 10, 5.34);
    19         
    20         System.out.println("排序前:");
    21         displayArray(s);
    22         
    23         Arrays.sort(s);
    24         
    25         System.out.println("排序后:");
    26         displayArray(s);
    27     }
    28 }
    29 
    30 /*
    31  * 根据年龄进行非升序排序
    32  */
    33 class Student implements Comparable<Student> {
    34     private String name;
    35     private int age;
    36     private double height;
    37     
    38     public Student(String name, int age, double height) {
    39         this.name = name;
    40         this.age = age;
    41         this.height = height;
    42     }
    43     
    44     @Override
    45     public int compareTo(Student o) {
    46         if (this.age <= o.age) {
    47             return 1;
    48         }
    49         return -1;
    50     }
    51     
    52     public String toString() {
    53         return "Name: " + name + " Age: " + age + " Height: " + height;
    54     }
    55 }
    View Code

    运行结果如下:

    根据指定属性对类类型数组排序:

     1 package sort;
     2 
     3 import java.util.Arrays;
     4 import java.util.Comparator;
     5 
     6 public class Main {
     7     public static void displayArray(Student[] student) {
     8         for (Student s : student) {
     9             System.out.println(s);
    10         }
    11     }
    12     
    13     public static void main(String[] args) {
    14         Student[] s = new Student[5];
    15         s[0] = new Student("wwww", 20, 2.34);
    16         s[1] = new Student("kkkk", 2, 2.34);
    17         s[2] = new Student("pppp", 25, 3.34);
    18         s[3] = new Student("hhhh", 12, 4.34);
    19         s[4] = new Student("jjjj", 10, 5.34);
    20         /*
    21         System.out.println("排序前:");
    22         displayArray(s);
    23         */
    24         System.out.println("按age进行非降序排序");
    25         Arrays.sort(s, new SortByAge());
    26         displayArray(s);
    27         
    28         System.out.println("按height进行非升序排序");
    29         Arrays.sort(s, new SortByHeight());
    30         displayArray(s);
    31     }
    32 }
    33 
    34 class Student {
    35     private String name;
    36     private int age;
    37     private double height;
    38     
    39     public Student(String name, int age, double height) {
    40         this.name = name;
    41         this.age = age;
    42         this.height = height;
    43     }
    44     
    45     public String toString() {
    46         return "Name: " + name + " Age: " + age + " Height: " + height;
    47     }
    48     
    49     public int getAge() {
    50         return age;
    51     }
    52     
    53     public double getHeight() {
    54         return height;
    55     }
    56 }
    57 
    58 /*
    59  * 按age进行非降序排序
    60  */
    61 class SortByAge implements Comparator<Student> {
    62     @Override
    63     public int compare(Student o1, Student o2) {
    64         if (o1.getAge() <= o2.getAge()) {
    65             return -1;
    66         }
    67         return 1;
    68     }
    69 }
    70 
    71 /*
    72  * 按height进行非升序排序
    73  */
    74 class SortByHeight implements Comparator<Student> {
    75     @Override
    76     public int compare(Student o1, Student o2) {
    77         if (o1.getHeight() - o2.getHeight() < 0.01) {
    78             return 1;
    79         }
    80         return -1;
    81     }
    82     
    83 }
    View Code

    运行结果如下:

  • 相关阅读:
    【计算机网络】复习集(更新中)
    滑雪 (记忆化搜索)
    橱窗布置
    复制书稿 (dp+贪心)
    8786:方格取数 (多线程dp)
    编辑距离
    8782:乘积最大
    合并石子 (区间dp+前缀和)
    6045:开餐馆
    6049:买书 (完全背包)
  • 原文地址:https://www.cnblogs.com/wss-is-knight/p/3636952.html
Copyright © 2011-2022 走看看