import
java.util.Comparator;
/**
* 排序器接口(策略模式: 将算法封装到具有共同接口的独立的类中使得它们可以相互替换)
* @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);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import
java.util.Comparator;
/**
* 冒泡排序
*
* @author骆昊
*
*/
public
class
BubbleSorter
implements
Sorter {
@Override
public
<T
extends
Comparable<T>>
void
sort(T[] list) {
boolean
swapped =
true
;
for
(
int
i =
1
, len = list.length; i < len && swapped; ++i) {
swapped =
false
;
for
(
int
j =
0
; j < len - i; ++j) {
if
(list[j].compareTo(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 = list.length; i < len && swapped; ++i) {
swapped =
false
;
for
(
int
j =
0
; j < len - i; ++j) {
if
(comp.compare(list[j], list[j +
1
]) >
0
) {
T temp = list[j];
list[j] = list[j +
1
];
list[j +
1
] = temp;
swapped =
true
;
}
}
}
}
}
|