这个程序为什么没有输出
#include<stdio.h>
void binaryInsert(int a[],int n)
{ int i,k,r;
int temp;
for(i=1;i<n;i++)
{ temp=a[i];
k=0;r=i-1;
while(k<=r)
{ int m;
m=(k+2)/2;
if(temp<a[m])
r=m-1;
else
k=m+1;
}
for(r=i;r>k;r--)
{a[r]=a[r-1];
}
a[k]=temp;
}
}
main()
{ int b[5]={5,2,3,1,4},i;
binaryInsert(b,5);
for(i=0;i<5;i++)
printf("%d ",b[i]);
getch();
}
[此贴子已经被作者于2006-7-20 11:21:42编辑过]
搜索更多相关的解决方案:
输出
----------------解决方案--------------------------------------------------------
没看明白你要 做什么,不过出现了死循环那是肯定的!
----------------解决方案--------------------------------------------------------
怎么出现死循环,请详细说明
binaryInsert函数是对数组的排序,采用折半查找排序的方法
----------------解决方案--------------------------------------------------------
折半查找排序法在本论坛中有高手已经提出过了,如果你想找到死循环,最简单的办法就是printf,看到哪里停了就知道的呗
----------------解决方案--------------------------------------------------------
i循环到3时,r==0,k==0,m==1,a[m]>temp始终成立,执行r=m-1后,r仍为0,仍有k<=r成立,进入死循环。
程序我没看太明白,看不出"折半"的味道,相关帖子查下论坛吧,
----------------解决方案--------------------------------------------------------