冒泡排序几乎是个程序员都写得出来,但是面试的时候如何写一个逼格高的冒泡排序却不是每个人都能做到,下面提供一个参考代码:
1 import java.util.Comparator; 2 3 /** 4 * 排序器接口(策略模式: 将算法封装到具有共同接口的独立的类中使得它们可以相互替换) 5 * 6 */ 7 public interface Sorter { 8 9 /** 10 * 排序 11 * @param list 待排序的数组 12 */ 13 public <T extends Comparable<T>> void sort(T[] list); 14 15 /** 16 * 排序 17 * @param list 待排序的数组 18 * @param comp 比较两个对象的比较器 19 */ 20 public <T> void sort(T[] list, Comparator<T> comp); 21 } 1 import java.util.Comparator; 2 3 /** 4 * 冒泡排序 5 * 6 * 7 */ 8 public class BubbleSorter implements Sorter { 9 10 @Override 11 public <T extends Comparable<T>> void sort(T[] list) { 12 boolean swapped = true; 13 for (int i = 1, len = list.length; i < len && swapped; ++i) { 14 swapped = false; 15 for (int j = 0; j < len - i; ++j) { 16 if (list[j].compareTo(list[j + 1]) > 0) { 17 T temp = list[j]; 18 list[j] = list[j + 1]; 19 list[j + 1] = temp; 20 swapped = true; 21 } 22 } 23 } 24 } 25 26 @Override 27 public <T> void sort(T[] list, Comparator<T> comp) { 28 boolean swapped = true; 29 for (int i = 1, len = list.length; i < len && swapped; ++i) { 30 swapped = false; 31 for (int j = 0; j < len - i; ++j) { 32 if (comp.compare(list[j], list[j + 1]) > 0) { 33 T temp = list[j]; 34 list[j] = list[j + 1]; 35 list[j + 1] = temp; 36 swapped = true; 37 } 38 } 39 } 40 } 41 }
转载于:https://www.cnblogs.com/-lai/p/6546076.html