希尔排序的增量怎么确定
希尔排序的增量如何确定
这个是书上的一个例子, 没有提供如何确定增量的法子,增量数组里该是多少值
------解决方案--------------------
随便,只要最后的增量是1即可,即完成一次插入排序。
- 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即可,即完成一次插入排序。