如何调用二进制搜索函数运行?
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;
}
以上是关于如何调用二进制搜索函数运行?的主要内容,如果未能解决你的问题,请参考以下文章