import java.util.*;
public class Test {
@FunctionalInterface
private interface CompOperation<T> {
int doCompare(T o1, T o2);
}
private static <T> void bubbleSort(T[] array, CompOperation<T> op) {
boolean swapped = true;
for (int i = 1; swapped && i <= array.length - 1; ++i) {
swapped = false;
for (int j = 0; j < array.length - i; ++j) {
if (op.doCompare(array[j], array[j + 1]) > 0) {
T temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
swapped = true;
}
}
if (swapped) {
swapped = false;
for (int j = array.length - i - 1; j > 0; --j) {
if (op.doCompare(array[j], array[j - 1]) < 0) {
T temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
swapped = true;
}
}
}
}
}
public static <T> void bubbleSort(T[] array, Comparator<T> comp) {
bubbleSort(array, (CompOperation<T>) comp::compare);
}
private static <T extends Comparable<T>> void bubbleSort(T[] array) {
bubbleSort(array, (CompOperation<T>) Comparable::compareTo);
}
public static void main(String[] args) {
Integer[] x = { 23, 12, 99, 48, 57, 62, 33, 15, 9, 80 };
bubbleSort(x);
for (Integer temp : x) {
System.out.print(temp + " ");
}
System.out.println();
bubbleSort(x, (CompOperation<Integer>) (o1, o2) -> o2 - o1);
for (Integer temp : x) {
System.out.print(temp + " ");
}
System.out.println();
}
}
-
Java
3187 引用 • 8213 回帖
Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于