引導語:冒泡排序也是Java語言面試可能會出現的題目,以下是本站小編分享給大家的`用Java寫一個冒泡排序方法,歡迎閲讀學習!
用Java寫一個冒泡排序
答:冒泡排序幾乎是個程序員都寫得出來,但是面試的時候如何寫一個逼格高的冒泡排序卻不是每個人都能做到,下面提供一個參考代碼:
12345678910111213141516171819202122 | import arator; /**
* 排序器接口(策略模式: 將算法封裝到具有共同接口的獨立的類中使得它們可以相互替換)
* @author駱昊
*
*/ public interface Sorter {
/**
* 排序
* @param list 待排序的數組
*/
public <T extends Comparable<T>> void sort(T[] list);
/**
* 排序
* @param list 待排序的數組
* @param comp 比較兩個對象的比較器
*/
public <T> void sort(T[] list, Comparator<T> comp); } |
123456789101112131415161718192021222324252627282930313233343536373839404142 | import arator; /**
* 冒泡排序
*
* @author駱昊
*
*/ public class BubbleSorter implements Sorter {
@Override
public <T extends Comparable<T>> void sort(T[] list) {
boolean swapped = true ;
for ( int i = 1 , len = th; i < len && swapped; ++i) {
swapped = false ;
for ( int j = 0 ; j < len - i; ++j) {
if (list[j]areTo(list[j + 1 ]) > 0 ) {
T temp = list[j];
list[j] = list[j + 1 ];
list[j + 1 ] = temp;
swapped = true ;
}
}
}
}
@Override
public <T> void sort(T[] list, Comparator<T> comp) {
boolean swapped = true ;
for ( int i = 1 , len = th; i < len && swapped; ++i) {
swapped = false ;
for ( int j = 0 ; j < len - i; ++j) {
if (are(list[j], list[j + 1 ]) > 0 ) {
T temp = list[j];
list[j] = list[j + 1 ];
list[j + 1 ] = temp;
swapped = true ;
}
}
}
} } |