1 package log;
2
3 public class Test4 {
4
5 /**
6 * java算法---希尔排序(最小增量排序)
7 *
8 * @param args
9 */
10 public static void main(String[] args) {
11 // 需要排序的数组
12 int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50
};
13 double d1 =
arr.length;
14 int temp = 0
;
15 // 循环输出该数组内容
16 System.out.println("排序之前:"
);
17 for (
int a : arr) {
18 System.out.print(a + "\t"
);
19 }
20 System.out.println();
21
22 while (
true) {
23 d1 = Math.ceil(d1 / 2) % 2 == 0 ? Math.floor(d1 / 2) : Math.ceil(d1 / 2
);
24 int d = (
int) d1;
25 for (
int x = 0; x < d; x++
) {
26 for (
int i = x + d; i < arr.length; i +=
d) {
27 int j = i -
d;
28 temp =
arr[i];
29 for (; j >= 0 && temp < arr[j]; j -=
d) {
30 arr[j + d] =
arr[j];
31 }
32 arr[j + d] =
temp;
33 }
34 }
35 if (d == 1
) {
36 break;
37 }
38
39 }
40
41 // 循环输出该数组内容
42 System.out.println("排序之后:"
);
43 for (
int a : arr) {
44 System.out.print(a + "\t"
);
45 }
46 System.out.println();
47
48 }
49
50 }
转载于:https://www.cnblogs.com/javallh/p/8762412.html