非常诡异,求高手指教

wk20062006 wk20062006 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
void ShellSort(int *list,int length) //希尔排序
{
int i;
int j,m,n;
int temp;
i=length;
while(i>=1)
{
i=i/2;
for(j=0;j<i;j++)
{
for(m=j;m+i<length;m=m+i)
{
n=m+i;
if(list[m]>list[n])
{
temp=list[n];
while(list[m]>temp&&m>0)
{
list[m+i]=list[m];
m=m-i;
}
list[m+i]=temp;
}
m=n-i;
}
}
}
}



那个while循环里(list[m]>temp&&m>0)这样子写的话如要给10000数排序就会报错,但(m>0&&list[m]>temp)反过来的话就不会报错,这是为什么啊(报错是指运行时停止工作,如果给少点数排序如100个数,两个都没事),非常诡异。。。
...全文

相关推荐

评论 19
收藏 已收藏
分享
返回顶部
wk20062006
C语言 70,040 成员 243,237 内容