我如何将二进制搜索函数调用到 运行?
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
我目前正在学习 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;
}