| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1000 人关注过本帖
标题:关于二分法对数据的查找
只看楼主 加入收藏
豆籽
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-11
结帖率:50%
收藏
已结贴  问题点数:15 回复次数:2 
关于二分法对数据的查找
int search(int arr[],int key,int n)
  { int mid,low=0,high=n-1;
     while(low<=high)
       { mid=(low+high)/2;
        if(arr[mid]==key)
          { printf("suo cha zhao de zhi zai shu zu d di %d wei,zhi wei %d",mid+1,key);
            return;
          }
        if(arr[mid]>key)
           { high=mid-1;
           }
         else
           {low =mid+1;}
        }
  }

main()
{   int a[100];
    int i,n;
    int key;
    printf("n=");
    scanf ("%d\n",&n);
    printf("shu ru shu zu a li de yuan su:");
    for(i=0;i<n;i++)
    scanf("%d",a[i]);
    printf("\n");
    printf("the number of key is:");
    scanf("%d",&key);
    search(a,key,n);
    getch();
}

我在win tc上编写了用二分法查找一个数据的以上程序,我假设数组a里的元素是按升序排列的,即先不考虑数组元素的排序问题。
程序可以编译成功,但运行结果出了问题,如图,如果我选定n=10,输入数字10之后,就再没有反应了= =,不知道哪里出了错,请各位指点Σ( ° △ °|||)︴,谢了!
搜索更多相关主题的帖子: search return 二分法 
2014-12-18 21:47
豆籽
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-11
收藏
得分:0 
回复 楼主 豆籽
图片附件: 游客没有浏览图片的权限,请 登录注册
2014-12-18 21:49
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:15 
scanf ("%d\n",&n);


去掉\n


[fly]存在即是合理[/fly]
2014-12-18 22:50
快速回复:关于二分法对数据的查找
数据加载中...
 
   



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

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