| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1402 人关注过本帖
标题:求棒助折半查找问题
取消只看楼主 加入收藏
tm00
Rank: 2
等 级:论坛游民
帖 子:25
专家分:20
注 册:2016-10-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
求棒助折半查找问题
有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
输入10的时候,没有结果出来,程序停顿住了,输入其它数都得正常结果,为什么这样?哪位大神帮帮忙,找下问题出在哪?
代码如下:
  int main(){
      static int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
      int i,n,l,j=0;
      l=sizeof(a)/sizeof(a[0]);
      scanf("%d",&n);
      i=(l-1)/2;
      j=i;
      do{
         if(a[j]<n){
             i/=2;
             j=i+j+1;
         }
         if(a[j]>n){
             i=j;
             i/=2;
             j=i;
         }
         if(a[j]==n){
             printf("yes,%d\n",j);
             break;
         }
         if(i==0&&a[j]!=n)printf("no\n");
      }while(i>0);
      system("pause");
      return 0;
  }
搜索更多相关主题的帖子: 元素 
2016-12-16 10:53
tm00
Rank: 2
等 级:论坛游民
帖 子:25
专家分:20
注 册:2016-10-29
收藏
得分:0 
回复 楼主 tm00
你改过后输入其他数据都没问题,但输入0就有问题了。
2016-12-16 19:33
tm00
Rank: 2
等 级:论坛游民
帖 子:25
专家分:20
注 册:2016-10-29
收藏
得分:0 
回复 5楼 九转星河
图片附件: 游客没有浏览图片的权限,请 登录注册

这是输入0的结果
2016-12-16 20:40
快速回复:求棒助折半查找问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015463 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved