| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1113 人关注过本帖
标题:有点被if语句,弄混了。
取消只看楼主 加入收藏
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
有点被if语句,弄混了。
书上的例子是:这么一个折半查找函数,用于判定已非排序的数组V中是否存在某个特定的x值。数组v元素以升序排列~~~  后面省略,就是对if之后的执行请教下怎么执行的。
函数如下:
 
int binsearch(int x,int [v],int n)
{
    int low,high,mid;
    low=0;
    high=n-1;
    while(low<=high){
    mid=(low+high)/2;
    if(x<v[mid])
         high=mid-1;
     else if(x>v[mid])
     low=mid-1;
   }
  return -1;
}

在这,我就是问下,假如说执行了:   if(x<v[mid])
                                      high=mid-1;
语句后,是回到while再判断,还是直接结束循环呢?
我觉得是再回到while进行判断,但书上说while循环语句内共执行两次测试,不懂?
搜索更多相关主题的帖子: 元素 return 元素 return 
2012-07-18 08:53
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 2楼 long0042
不好意思,刚才有点事,发代码的时候急了。我就是想问下,比如我执行第一个if(x<v[mid])后,是跳出了循环还是继续回到while呢?
书上说while循环语句内共执行了两次测试,这个循环确实有点搞不懂了。
这个是书上的源代码,我对过了:

int binsearch(int x,int v[],int n)
{
    int low,high,mid;
    low=0;
    high=n-1;
    while(low<=high){
    mid=(low+high)/2;
    if(x<v[mid])
         high=mid-1;
     else if(x>v[mid])
     low=mid+1;
     else
     return mid
   }
  return -1;
}
2012-07-18 11:06
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 5楼 tiyager
我也觉得是啊。但“while循环语句内共执行两次测试” 这句话怎么理解呢?
2012-07-18 11:29
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 7楼 TonyDeng
恩,懂了,谢谢了。
2012-07-18 11:45
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 9楼 embed_xuel
第二次发的就是最后return后少了个“;”.其他都对的了。
这是函数,不是程序的。
2012-07-18 15:24
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 11楼 TonyDeng
恩,知道了,谢谢
2012-07-18 15:25
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 10楼 有容就大
恩,我知道了,谢谢你
2012-07-18 15:26
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 15楼 embed_xuel
可以啊~~我没说什么啊~~~
2012-07-18 18:01
快速回复:有点被if语句,弄混了。
数据加载中...
 
   



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

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