template<typename T>
void Shell_Sort(T arr[], int N)
{
for (int D = N / 2; D > 0; D /= 2)
{
for(int i = D; i < N; i++)
{
int j = i;
T tmp = arr[i];
while ( j >= D&&tmp < arr[j - D])
{
arr[j] = arr[j - D];
j-=D;
}
arr[j] = tmp;
}
}
}
如果增量元素不互质,则小增量(D>1)可能根本不起作用
增量序列