希尔排序的增量如何确定

liuzu2012 2012-05-13 03:04:15
//一个希尔排序,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;
}
}
}
}








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

...全文
1139 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuzu2012 2012-05-13
  • 打赏
  • 举报
回复
顶起;奥啊
liuzu2012 2012-05-13
  • 打赏
  • 举报
回复
随便的意思是,增量数组 的元素也可以随便吗??


{6,3,1};

不管它待排定的数组的有多少个元素
W170532934 2012-05-13
  • 打赏
  • 举报
回复
素数的比较好。最好用素数作为增量。
wsxxiaohao 2012-05-13
  • 打赏
  • 举报
回复
据说要素数的比较好。
peng_weida 2012-05-13
  • 打赏
  • 举报
回复
待研究问题~
qq120848369 2012-05-13
  • 打赏
  • 举报
回复
随便,只要最后的增量是1即可,即完成一次插入排序。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧