1 public class Solution
2 {
3 public void shellSort(int[] data)
4 {
5 for(int i = data.length / 2; i > 0; i = i / 2)
6 {
7 for(int j = 0; j < i; j ++)
8 {
9 insertSort(data, j, i);
10 }
11 }
12 }
13
14 public void insertSort(int[] data, int begin, int distance)
15 {
16 for(int i = begin + distance; i < data.length; i = i + distance)
17 {
18 int key = data[i];
19
20 int pointer = i - distance;
21
22 while((pointer >= 0) && (data[pointer] > key))
23 {
24 data[pointer + distance] = data[pointer];
25
26 pointer = pointer - distance;
27 }
28
29 data[pointer + distance] = key;
30 }
31 }
32
33 }