1 //升序
2 public class MyInsertSort {
3 // 直接插入排序
4 public void StraightInsertionSort(double[] sorted) {
5 int i, j;
6 for (i = 2; i < sorted.length; i++) {
7 if (sorted[i] < sorted[i - 1]) {
8 sorted[0] = sorted[i];// 设一监视哨
9 sorted[i] = sorted[i - 1];
10 for (j = i - 2; sorted[j] > sorted[0]; j--) {// 所有大于监视哨值后移
11 sorted[j + 1] = sorted[j];
12 }
13 sorted[j + 1] = sorted[0];
14 }
15 }
16 }
17
18 // 希尔排序
19 public void ShellSort(double[] sorted) {
20 int incr[] = { 7, 5, 3, 1 };
21 for (int i = 0; i < incr.length; i++) {
22 ShellInsertSort(sorted, incr[i]);
23 }
24 }
25
26 public void ShellInsertSort(double[] sorted, int incr) {
27 // TODO Auto-generated method stub
28 int i1, j1;
29 for (i1 = 1 + incr; i1 < sorted.length; i1++) {
30 if (sorted[i1] < sorted[i1 - incr]) {
31 sorted[0] = sorted[i1];
32 for (j1 = i1 - incr; (sorted[j1] > sorted[0]) && j1 > 0; j1--) {
33 sorted[j1 + incr] = sorted[j1];
34 }
35 sorted[j1 + incr] = sorted[0];
36 }
37 }
38 }
39
40 }