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

问题描述 投票:0回答:1

我现在正在学习C语言,在一本书上得到了这段做二进制搜索的代码。我对调用有参数的C函数还是很迷茫的,书上到现在也没有给我太多上下文。我相信第3个参数是内存存储(我不太确定)。我试着在googlebing上搜索,但是很多例子都有一个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 algorithm binary-search
1个回答
0
投票

基本上,你需要做这样的事情。但正如评论所推荐的那样,(尽管当我们已经知道一些其他语言时,很容易跳过前面的内容)请回去确保你先把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);
}

0
投票

如果你想运行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;
}
这是输出结果
© www.soinside.com 2019 - 2024. All rights reserved.