package com.liuxt.sort.impl;
import com.liuxt.sort.Sort;
public class XierImpl implements Sort {
@SuppressWarnings("unchecked")
public void sortData(int[] data) {
int n = data.length;
int delta[] = new int[n];
int k, i, t, dk, j;
k = n;i = 0;
do {
k = k / 2;
delta[i++] = k;
} while (k > 0);
i = 0;
for (int m = 0; m < delta.length; m++)
while ((dk = delta[i]) > 0) {
for (k = delta[i]; k < n; ++k) {
if (data[k] < data[k - dk]) {
t = data[k];
for (j = k - dk; j >= 0 && t < data[j]; j -= dk) {
data[j + dk] = data[j];
}
data[j + dk] = t;
}/* if */
}
++i;
}/* while */
}
}