希尔排序的增量怎么确定

希尔排序的增量如何确定
C/C++ code
//一个希尔排序,d是增量数组,numOfD是增量数组的大小。西安交通大学的一本书上的代码,请问在使用的时候,增量数组传多少合适呢???
//书上并没有说明

void ShellSort(int a[], int n , int d[] ,int numOfD)
{

    int i,j,k;
    int val;
    int span;    //增量
    for(int m=0; m<numOfD; m++)        //m趟
    {
        span=d[m];
        for(k=0; k<span; k++) //span个小组 
        {
            //组内进行直接插入排序 ,区别在于每次不是增加1,而是增加span
            for(i=k; i<n-span; i+=span)
            {
                val=a[j+span];
                j=i;
                while(j>-1 && val<a[j])
                {
                    a[j+span]=a[j];
                    j=j-span;
                }

                a[j+span]=val;
            }
        }
    }
}









这个是书上的一个例子, 没有提供如何确定增量的法子,增量数组里该是多少值



------解决方案--------------------
随便,只要最后的增量是1即可,即完成一次插入排序。