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 }