二进制搜索代码行

时间:2017-10-26 07:13:00

标签: c binary-search

我一直在努力学习二进制搜索是如何工作的,所以我搜索了一个代码并尝试了解每行的作用。有一条我不明白的路线。带"的行返回-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();
}

2 个答案:

答案 0 :(得分:1)

二进制搜索在数组中执行,数组的位置从0开始。因此,如果返回-1表示位置不在数组中或无法定位。

答案 1 :(得分:1)

执行while循环并包含一个return语句,如果您要查找的项目在数组中,则while循环中的返回将返回该项目的索引。如果找不到该项,则后面的return -1语句将返回给调用者,即如果high>low,则-1用于指示它在数组中作为-1的索引超出范围任何数组。如果没有return -1语句,则会出现编译时错误,指出缺少return语句

执行支票时

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

如果二元搜索方法找到该项并返回索引(将> -1),则“Found!将打印到控制台,否则如果二进制搜索方法返回值&lt; 0,即-1然后在数组中找不到该项,因此 Not Found!被打印到控制台,单独的if语句可以为您的二进制搜索提供一个很好的解释!