シェルソート(Shell Sort)

private void sort(int[] data) {
	int gap = data.length / 2;
	while (gap > 0) {
		for (int i=gap; i<data.length; i++) {
			int j = i;
			while (j >= gap) {
				if (data[j] < data[j-gap]) {
					int tmp = data[j];
					data[j] = data[j-gap];
					data[j-gap] = tmp;
				} else {
					break;
				}
				j -= gap;
			}
		}
		gap /= 2;
	}
}