【发布时间】:2021-11-17 21:16:10
【问题描述】:
我尝试在像一维数组这样的结构中搜索数据,但它总是告诉我目标数据尚未找到,尽管我已经完全按照它的算法。现在我完全糊涂了
下面是我如何定义函数
int RecBinarySearch (int a[], int low, int high, int key) {
int mid{ };
if (high >= low ) {
mid = low + (high-low)/2;
if (key == a[mid]) return mid;
if (key > a[mid]) RecBinarySearch(a, mid + 1, high, key);
if (key < a[mid]) RecBinarySearch(a, low, mid - 1, key);
}
return -1;
}
在这里你可以看到我是如何定义我的数组的
int n{};
int* a = new int [n] {};
【问题讨论】:
-
注意:去掉
c标签,你的代码是C++,不是C。不同的语言,不同的解决方案。 -
@LucaPolito
int a[n];C :)。RecBinarySearch与 C 兼容(除了这个mid{}),c标记应该保留 -
@tstanisl 我明白你的意思。但总的来说,C 解决方案可能并不理想(没有利用 C++ 的所有特性),C++ 解决方案在 C 中可能是错误的。
-
@tstanisl
int* a = new int [n] {};不是 C。int mid{ };不是 C。但它的编写方式就像您编写 C 代码一样。 -
你应该edit你的问题并显示minimal reproducible example。
标签: c++ recursion search binary-search