读书人

希尔排序的增量怎么确定

发布时间: 2012-05-14 15:24:34 作者: rapoo

希尔排序的增量如何确定

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即可,即完成一次插入排序。

读书人网 >C语言

热点推荐