使用Java集合类库中的函数实现快速排序
快速排序(QuickSort)是一种常用的排序算法,它是一种分治的算法。具体实现为:从数列中挑出一个元素,称为“基准”(pivot),然后将数组中比基准大的数放在基准右边,比基准小的数放在基准左边,最后再递归地对左右两部分进行快速排序。
在Java的集合类库中,提供了一些函数来实现快速排序。下面介绍一些常用的函数和使用方法。
1. Arrays.sort()函数
Arrays.sort()函数是Java的集合类库中排序函数中使用最广泛的函数之一,它可以对一个数组进行排序。此函数为static方法,可以直接使用类名调用,支持的排序方式也非常灵活,可以使用默认的排序方式,也可以使用自定义的排序方式。
默认排序方式:Arrays.sort()函数默认使用Arrays.sort(Object[] a)函数实现排序,此时排序方式为升序排序,对于基本数据类型和包装类类型,也可以使用相应的sort()函数。
使用Arrays.sort()函数升序排序一个整形数组的示例:
int[] arr = {2, 5, 1, 3, 4};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
输出结果:[1, 2, 3, 4, 5]
自定义排序方式:
在使用Arrays.sort()函数时,可以通过传入一个Comparator接口实现类来实现自定义的排序方式。
使用Arrays.sort()函数按照字符串长度排序一个字符串数组的示例:
String[] arr = {"aa", "a", "aaa", "bbbb", "bb"};
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
System.out.println(Arrays.toString(arr));
输出结果:[a, aa, bb, aaa, bbbb]
2. List.sort()函数
List.sort()函数是Java8之后添加的函数,提供了与Arrays.sort()函数类似的排序功能,可以对List集合进行排序。与Arrays.sort()函数类似,List.sort()函数也提供了传入Comparator接口实现类来实现自定义的排序方式。
使用List.sort()函数对一个字符串集合按照长度排序的示例:
List<String> list = new ArrayList<>(Arrays.asList("aa", "a", "aaa", "bbbb", "bb"));
list.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
System.out.println(list);
输出结果:[a, aa, bb, aaa, bbbb]
3. Collections.sort()函数
Collections.sort()函数与List.sort()函数类似,都可以对List集合进行排序,可以使用默认的排序方式,也可以传入Comparator接口实现类来实现自定义排序方式。不同的是,Collections.sort()函数是在Java2之后添加的函数,使用起来相对比较繁琐。
使用Collections.sort()函数对一个整型集合进行升序排序的示例:
List<Integer> list = new ArrayList<>(Arrays.asList(2, 5, 1, 3, 4)); Collections.sort(list); System.out.println(list);
输出结果:[1, 2, 3, 4, 5]
自定义排序方式:
List<String> list = new ArrayList<>(Arrays.asList("aa", "a", "aaa", "bbbb", "bb"));
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
System.out.println(list);
输出结果:[a, aa, bb, aaa, bbbb]
综上所述,Java的集合类库提供了一些函数来实现快速排序,包括:Arrays.sort()函数、List.sort()函数和Collections.sort()函数。其中,Arrays.sort()函数使用最广泛,List.sort()函数和Collections.sort()函数则在实现自定义排序方式时更加灵活。需要注意的是,使用这些函数进行排序时,传入的集合必须实现了Comparable接口或传入了Comparator接口实现类。
