操作场景
本文将使用泛型和比较器实现一个java冒泡算法。
只是作为冒泡的别样实现示例,如有其他不足点可以评论指出
排序算法简介
通过重复遍历待排序的序列,比较两个相邻元素,如果不符合比较器规则就相互交换。
优势:泛型定义与比较器的使用使得算法更加灵活,在没有其他变量影响的前提下,可以直接调用并对业务逻辑的侵入性更小
时间复杂度:O(n²)
代码实现
public class BubbleSort<T> {
public T[] bubbleSort(T[] array, Comparator<? super T> comparator) {
int n = array.length;
boolean swapped;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (comparator.compare(array[j], array[j + 1]) > 0) {
// Swapping elements
T temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
swapped = true;
}
}
if (!swapped) {
// no exchange has occurred
break;
}
}
return array;
}
}
使用示例
Integer[] arr = {5, 2, 8, 3, 1};
BubbleSort<Integer> sorter = new BubbleSort<>();
sorter.bubbleSort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr));
输出将会是[8, 5, 3, 2, 1]
。