冒泡排序

冒泡排序幾乎是個程序員都寫得出來,可是面試的時候如何寫一個逼格高的冒泡排序卻不是每一個人都能作到,下面提供一個參考代碼:java

 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 }
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息