我如何将二进制搜索函数调用到 运行?

How would I call a Binary Search function to run?

我目前正在学习 C,并且在一本书中得到了这段代码,用于进行二分查找。我仍然对使用参数调用 C 函数感到很困惑,到目前为止这本书还没有给我太多的上下文。我相信第三个参数是内存存储(我不完全确定)。我尝试了 google/bing 但许多示例都有一个 main 函数以及另一个由 main 调用的函数。我错过了什么?我尝试像在 Python 中那样调用 binsearch,但出现了一堆错误。

#include <stdio.h>

/* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */

int binsearch(int x, int v[], int n)
{
    int low, high, mid;

    low = 0;
    high = n -1;
    while (low <= high) {
        mid = (low + high)/ 2;
        if (x < v[mid]){
            high = mid -1;
        }
        else if (x > v[mid]) {
            low = mid + 1;
        }
        else{
            // found match
            return mid;
        }
        // no match
        return -1;
    }

}

binsearch(4,[1,2,3,4,5,6,7,8],8)

谢谢。

基本上,你需要做这样的事情。但正如评论所建议的那样,(尽管当我们已经了解其他语言时很容易跳过)请返回并确保您首先掌握了 C 的基础知识。

int main(){
    int arr[]={1,2,3,4,5,6,7,8};
    int index=binsearch(4,arr,8);   
    printf("Found at index: %d",index);
}

如果要运行C程序或C工程,必须有主函数或主文件。

尝试编译和运行代码

#include <stdio.h>

/* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */

int binsearch(int x, int v[], int n)
{
    int low, high, mid;

    low = 0;
    high = n -1;
    while (low <= high) {
        mid = (low + high)/ 2;
        if (x < v[mid]){
            high = mid -1;
        }
        else if (x > v[mid]) {
            low = mid + 1;
        }
        else{
            // found match
            return mid;
        }
        // no match
        return -1;
    }

}
int main(int argc, char ** argv){
  int a[] = {1,2,3,4,5,6,7,8};
  int re = binsearch(4,a,8);
  printf("re = %d\n", re);
  return 0;
}
This the output result