首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

希尔排序的增量怎么确定

2012-05-14 
希尔排序的增量如何确定C/C++ code//一个希尔排序,d是增量数组,numOfD是增量数组的大小。西安交通大学的一

希尔排序的增量如何确定

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

热点排行