/
ShellsortEx.java
49 lines (40 loc) · 943 Bytes
/
ShellsortEx.java
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
43
44
45
46
47
48
49
package chapterSeven;
/**
* 希尔排序
*
* @Author: dhcao
* @Version: 1.0
*/
public class ShellsortEx<T extends Comparable<? super T>> {
/**
* 希尔排序。
* 增量序列:N/2,N/4 ....
*
* @param a
* @param <T>
*/
public static <T extends Comparable<? super T>> void shellsort(T[] a) {
int j;
for (int gap = a.length / 2; gap > 0; gap /= 2) { // 增量序列
// 每个序列排序过程
for (int i = gap; i < a.length; i++) {
T tmp = a[i];
for (j = i; j >= gap && tmp.compareTo(a[j - gap]) < 0; j -= gap) {
a[j] = a[j - gap];
}
a[j] = tmp;
}
}
}
public static void main(String[] args) {
Integer[] a = new Integer[]{81, 94, 11, 96, 12, 35, 17, 95, 28, 58, 41, 75, 15};
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println("");
shellsort(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
}