1
回答
希尔排序法遇到的奇怪问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

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

#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;时,却不会显示结果啊

如图


<无标签>
举报
阮文明
发帖于5年前 1回/141阅
顶部