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
3196 引用 • 8215 回帖
Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于