//泛型(generic) - 让类型不再是程序中的硬代码(hard code)
//此处的 extends 不是继承而是泛型限定 限定T类型必须是Comparable 接口的子类型
// T 类型必须是引用类型
public static <T extends Comparable<T>> void bubbleSort(T[] array){
boolean swapped = true;
for(int i = 0; swapped && i < array.length - 1; i++){
swapped = false;
for(int j = 0; j < array.length - i - 1;j++){
if(array[j].compareTo(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){
boolean swapped = true;
for(int i = 0; swapped && i < array.length - 1; i++){
swapped = false;
for(int j = 0; j < array.length - i - 1;j++){
if(comp.compare(array[j], array[j + 1]) > 0)
{
T temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
swapped = true;
}
}
}
}
这样的冒泡排序基本上可以应对所有情况