欢迎访问宙启技术站
智能推送

Java数组排序函数: sort()方法的用法及示例

发布时间:2023-07-04 15:14:46

Java中的数组排序函数是sort()方法,它可以根据元素的自然顺序对数组进行排序。sort()方法是Arrays类的静态方法,可以直接通过类名调用。

sort()方法有多个重载的版本,可以接受不同类型的数组作为参数。常用的排序函数有:

1. sort(int[] array):对整型数组进行排序。

2. sort(double[] array):对双精度数组进行排序。

3. sort(char[] array):对字符数组进行排序。

4. sort(Object[] array):对对象数组进行排序,要求对象实现Comparable接口,并重写compareTo()方法。

5. sort(T[] array, Comparator<? super T> comparator):对对象数组进行排序,使用指定的比较器进行排序。

示例1:对整型数组排序

int[] array = {5, 9, 1, 3, 7};
Arrays.sort(array);
for (int i : array) {
    System.out.print(i + " ");
}
// 输出:1 3 5 7 9

示例2:对对象数组排序,使用默认的自然顺序(对象必须实现Comparable接口,并重写compareTo()方法)

class Person implements Comparable<Person> {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // getters and setters
    
    @Override
    public int compareTo(Person other) {
        return this.age - other.age;
    }
}

public static void main(String[] args) {
    Person[] people = {
        new Person("Alice", 25),
        new Person("Bob", 18),
        new Person("Charlie", 30)
    };
    Arrays.sort(people);
    for (Person p : people) {
        System.out.println(p.getName() + " " + p.getAge());
    }
    // 输出:
    // Bob 18
    // Alice 25
    // Charlie 30
}

示例3:对对象数组排序,使用自定义的比较器进行排序

class PersonComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        return p1.getName().compareTo(p2.getName());
    }
}

public static void main(String[] args) {
    Person[] people = {
        new Person("Alice", 25),
        new Person("Bob", 18),
        new Person("Charlie", 30)
    };
    Arrays.sort(people, new PersonComparator());
    for (Person p : people) {
        System.out.println(p.getName() + " " + p.getAge());
    }
    // 输出:
    // Alice 25
    // Bob 18
    // Charlie 30
}

sort()方法使用的是快速排序算法,时间复杂度为O(nlogn),且是原地排序,不需要额外的空间。分析排序算法的性能时,通常使用比较次数和交换(或移动)次数来衡量,快速排序的平均比较次数为1.39NlgN,平均交换次数为2NlgN。因此,Java的sort()方法可以在大多数情况下获得较好的性能。

需要注意的是,sort()方法只能对数组进行排序,不能对List进行排序。如果要对List进行排序,可以先将List转换为数组,然后使用sort()方法进行排序,最后将排序后的数组再转换回List。