当前位置: 代码迷 >> C语言 >> [求助]帮忙看一下这道程序题啊。。
  详细解决方案

[求助]帮忙看一下这道程序题啊。。

热度:103   发布时间:2005-04-05 19:45:00.0
[求助]帮忙看一下这道程序题啊。。

#define m 5 main() {int i,j; int c; int a[m]; printf("input some numer\n"); for(i=1;i<=m;i++) scanf("%d",&a[i]); printf("input one number\n"); scanf("%d",&j); c=search(a,j); printf("%d",c); }

search(int a[],int k) {int low,mid,high; int n=1; low=0; high=m-1; while(low<=high) {mid=(low+high)/2; if(k==a[mid]) return n; else if(k>a[mid]) {low=mid+1;n++;} else {high=mid-1;n++;} } return -1; }


----------------解决方案--------------------------------------------------------
这道题是折半查找。比如输入11个数字,5 12 18 20 35 50 64 72 80 88 95
打进一个50,输出一个1(表示比较1次)
打进一个18或者是80,输出是二
打进1 4 7或2 5 8。输出是三。
我这道程序题次数总是不对。请各位帮我看看吧。
----------------解决方案--------------------------------------------------------
输入2 5 8是输出四,表示第四次进行比较
----------------解决方案--------------------------------------------------------
自己解决了.....
----------------解决方案--------------------------------------------------------
  相关解决方案