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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何调用二进制搜索函数运行?相关的知识,希望对你有一定的参考价值。

我现在正在学习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语言的基础知识学好。

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
", re);
  return 0;
}

以上是关于如何调用二进制搜索函数运行?的主要内容,如果未能解决你的问题,请参考以下文章

从另一个片段调用一个片段中的方法

如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数

如何测量代码片段的调用次数和经过时间

如何从片段 KOTLIN 中调用意图 [重复]

201555332盛照宗—网络对抗实验1—逆向与bof基础

如何让片段中的多个视图调用片段类中声明的相同 onClick 函数?