希尔排序法遇到的奇怪问题

阮文明 发布于 2012/08/17 09:58
阅读 152
收藏 0

希尔排序代码如下:(注意红色的部分)

#include<STDIO.H>

int main()

{

int i,j,temp,shuzu[10]={0,3,6,9,82,54,2,1,43,7},k=10;

do 

{

k=k/2;

        for(i=k+1;i<10;i++)

{

if(shuzu[i]<shuzu[i-k])

{

temp=shuzu[i];//相当于插入排序法里面的哨兵

for(j=i-k;j>0&&shuzu[j]>temp;j-=k)

shuzu[j+k]=shuzu[j];

shuzu[j+k]=temp;

}

}

}while(k>1);

for(i=0;i<10;i++)

printf("%d ",shuzu[i]);

printf("\n");

return 0;

}

这个结果显然是正确的,可是当我把红色部分的k=k/2;改成k=k/2+1;时,却不会显示结果啊

如图


加载中
0
逝水fox
逝水fox
刚学这些,建议还是单步调试,自己找到错误
阮文明
阮文明
感觉没错啊,为什么就多加个1就不可以呢
返回顶部
顶部