1、先写一个通用的接口
/**
* 排序接口
* @author jxxchallenger
*
*/
public interface BaseSorter {
/**
*
* @param array 需要排序的数组
*/
public <T extends Comparable<T>> void sort(T[] array);
/**
*
* @param array 需要排序的数组
* @param comp 比较两个对象的比较器
*/
public <T> void sort(T[] array, Comparator<T> comp);
}
2、冒泡排序
/**
* 冒泡排序
* @author jxxchallenger
*
*/
public class BubbleSorter implements BaseSorter {
@Override
public <T extends Comparable<T>> void sort(T[] array) {
boolean swapped = true;
for(int i = 1; i < array.length && swapped == true; i++){
swapped = false;
for(int j = 0; j < array.length - i; j++){
if(array[j].compareTo(array[j + 1]) > 0){
T temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
swapped = true;
}
}
}
}
@Override
public <T> void sort(T[] array, Comparator<T> comp) {
boolean swapped =true;
for(int i = 1; i < array.length && swapped == true; i++){
swapped = false;
for(int j = 0; j < array.length - i; 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;
}
}
}
}
public static void main(String[] args){
Integer[] array = {46,89,65498,32,98,324,987,354,987913,498,657,798,7,654,987};
//Integer[] array = {1,2,3,4,5};
BaseSorter sorter = new BubbleSorter();
//sorter.sort(array);
sorter.sort(array, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1, o2);
}
});
System.out.println(Arrays.toString(array));
}
}