冒泡排序

冒泡排序几乎是个程序员都写得出来,但是面试的时候如何写一个逼格高的冒泡排序却不是每个人都能做到,下面提供一个参考代码:

 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 }

 

posted @ 2017-03-14 01:19  myNull  阅读(205)  评论(0编辑  收藏  举报