c中的第一次出现代码二进制搜索调试

问题描述 投票:0回答:1
int firstOcc(int a[],int m,int x)
{
    int high=m-1,low=0,mid,index=-1;

    while(low<=high){
    mid=(low+high)/2;

    if(a[mid]<x){
        mid=low+1;}

    if(a[mid]>x){
        mid=high-1;}

    if(a[mid]==x){
        index=mid;
        high=mid-1;}
    }

    return index;
}  

为什么我的功能不起作用?!找到第一次出现。它有什么问题?

找不到错误,从互联网上复制了几乎相同的代码,但我需要知道为什么我的代码不起作用

arrays c binary-search find-occurrences
1个回答
0
投票

错误:

        mid=low+1;}
…
        mid=high-1;}

右:

        low=mid+1;}
…
        high=mid-1;}

mid
改变是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.