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。
