使用comparator接口对数组冒泡排序
时间: 2023-12-05 13:04:18 浏览: 52
我们可以使用 `Comparator` 接口来对数组进行冒泡排序。这个接口允许我们定义一个自定义的比较器来排序数组中的元素,而不仅仅是默认的自然排序。下面是一个示例代码,它使用Comparator接口对整数数组进行冒泡排序:
```java
import java.util.Comparator;
public class BubbleSortWithComparator {
public static void main(String[] args) {
Integer[] arr = { 5, 2, 8, 3, 7 };
sort(arr, Integer::compareTo);
for (Integer i : arr) {
System.out.print(i + " ");
}
}
public static <T> void sort(T[] arr, Comparator<? super T> c) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (c.compare(arr[j], arr[j+1]) > 0) {
T temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
```
在这个示例代码中,我们定义了一个 `sort` 方法,它接收一个泛型数组和一个 `Comparator` 对象作为参数。这个方法使用冒泡排序算法对数组进行排序,并使用 `Comparator` 对象来比较数组元素的大小。
在 `main` 方法中,我们创建了一个整数数组,并使用 `sort` 方法进行排序。我们通过 `Integer::compareTo` 方法引用来创建一个 `Comparator` 对象,它使用默认的自然排序来比较整数。最后,我们打印出排序后的数组。
阅读全文