二进制搜索算法代码不会执行

Binary search algorithm code won't execute

    #include <stdio.h>
#include <stdlib.h>
int binary_search(int, int[], int);

int binary_search(int key,int arra[],int len){
    int low=0;
    int high=len-1;
    int mid=(low+high)/2;

    while(low<=high){
        if(arra[mid]==key){return mid;}
        else if (arra[mid]>key){high=mid-1;}

        else {low=mid+1;}
    }
     return -1;
}


int main()

{

       int arr[]={1,2,3,4,5,6,7};
    int len = sizeof(arr) / sizeof(arr[0]);
    printf("%d",len);
    binary_search(2,arr,len);
    return 0;
}

所以,尝试 运行 这个并且我没有得到任何输出,最初我有代码从用户那里获取数组的输入但是它也没有工作所以即使在简化之后它并在代码本身中添加数组并没有解决问题。有人可以指出吗?

您永远不会更改变量 mid。它总是 3 并且由于 arr[3] > 2 (第二个条件),while 循环永远不会中断。 low卡在0,高卡在2,无限运行。

int binary_search(int key,int arra[],int len){
    int low=0;
    int high=len-1;
    int mid=(low+high)/2;

    while(low<=high){            
        int mid;            
        mid=(low+high)/2;         
        if(arra[mid]==key){
            printf("Found at %d",mid);
            return 1;
        }       
        else if (arra[mid]>key){
            high=mid-1;
        }         
        else{
            low=mid+1;
        }        
    }
    return -1;
}