xt447800853 2015-10-04 04:48 采纳率: 0%
浏览 1573

第一次提问!xcode中折半查找法的mid表达式位置问题,谢谢大神们~~

请问大神们:第三行中定义mid的时候为什么不能直接写上mid=(low+high)/2?(试了一下是无限循环,不出现结果),为什么一定要在while函数中才能描述表达式呢?

 #import <Foundation/Foundation.h>
int ZheBanSearch(int a[],int len ,int key){
    int low=0,high=len-1,mid;
    while (low<=high) {
        mid=(low+high)/2;//mid的表达式必须在这里进行定义,在上面定义会没有输出
        if (key>a[mid]) {
            low=mid+1;
        }else if(key<a[mid]){
            high=mid-1;}
            else{
                return mid;}

    }
    return -1;
}
int main(int argc, const char * argv[]) {
    int a[]={-8,37,89,99,128};
    int b=ZheBanSearch(a,5,128);
    printf("b=%d\n",b);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • mifit 2015-10-31 02:02
    关注

    把while的循环条件改下。low < high

    评论

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波