vector<int> a = {10,3,-5,1,-2,6,4,-1,14};
int N = a.size();
int h = 1;
while (h < N / 3)h = 3 * h + 1;
while (h >= 1) {
for (int i = h; i < N; i++)
for (int j = i; j >= h && a[j] > a[j - h]; j -= h)
{
int t = a[j];
a[j] = a[j - h];
a[j - h] = t;
}
h = h / 3;
}
摘自:《算法》谢路云