[讨论][原创]折半查找这样为什么不行?
这是我写的 对半查找..请问可以吗?# include <stdio.h>
int find(int k,int a[15],int x,int y)
{int i,z,n=0;
for(;x<=y;x++)
n=n+1;//求X到Y之间的个数//
z=y;
for(i=1;i<=n/2;i++)
z=z-1;//取Z为其中间值//
if(i==1) {printf("There is nothing"); return;}
if(k==a[z]) {printf("%d",z); return;}
if(k>a[z]) {y=z; find(k,a[15],x,y);}
if(k<a[z]) {x=z; find(k,a[15],x,y);}
}
main()
{int a[15];
int i,k;
for(i=0;i<15;i++)
scanf("%d",&a[i]);
scanf("%d",&k);
find(k,a[15],0,14);
getch();
}
是从大到小输入15个数...找个K的位置!
我用递归做的.可是....运行不了..理论上应该没有问题..请问哪里的毛病