二分查找代码行

Binary search line of code

我一直在努力学习二进制搜索的工作原理,所以我搜索了一段代码并试图理解每一行的作用。我不明白这一行。带有 "return -1" 的行。我不明白那是什么意思。有人可以解释那行代码中发生了什么吗?

 #include<stdio.h>

int binarySearch(int array[], int size, int searchValue){
int low = 0;
int high = size - 1;

while(low<=high){// is the array exhausted?
    int mid = (low + high) / 2; //If not, find the middle index

    if(searchValue == array[mid]){
        return mid;
    }
    else if(searchValue > array[mid]){
        low = mid + 1;
    }
    else{
        high = mid - 1;
    }
}
return -1;
}

int main(){
int array[] = {1,2,3,4,5,6,7};
int searchNum;

printf("Enter an integer:");
scanf("%d", &searchNum);

int result = binarySearch(array,7,searchNum);

if(result>=0){
    printf("Found!");
}
else{
    printf("Not found!");
}
getch();
}

对数组进行二分查找,数组的位置从0开始。所以如果-1为return表示该位置不在数组中或无法定位。

执行while循环,包含return语句,如果要查找的项在数组中,则return在while循环将 return 项目的索引。 returns 之后的 return -1 语句如果没有找到调用者,即如果 high>low,-1 用于指示它在数组中作为 - 的索引1 在任何数组的边界之外。如果没有 return -1 语句,则会出现编译时错误,指出缺少 return 语句

当您执行检查时

if(result>=0) {
printf("Found!");
} else {
printf("Not found!");
}

如果二分查找方法找到项目并且 returns 索引(将 >-1)然后 "Found! 将打印到控制台, 否则如果二进制搜索方法 returns 的值 <0,即 -1 那么在数组中没有找到该项目,因此 Not Found! 被打印到console,你的 if 语句本身就可以给你的二进制搜索一个很好的解释!