c++ - 我想要一个递归函数来使用二进制搜索检查数组的顺序

标签 c++ recursion binary-search

我写了一个递归函数来检查大小为 n 的数组是否按升序排列:

bool sortedAscending(const int*x, int n){
if (n == 0) return true;
if (x[n - 1] >= x[n - 2]) sortedAscending(x, n - 1);
else return false;
}

我想做同样的工作,但使用二进制搜索算法(即将每次递归调用将数组分成两半......)。我怎样才能做到这一点? 谢谢。

最佳答案

bool sortedAscending(const int* x, int n) {
  if (n <= 1) return true;
  int m = n / 2;
  return x[m-1] <= x[m] &&
         sortedAscending(x, m) &&
         sortedAscending(x + m, n - m);
}

关于c++ - 我想要一个递归函数来使用二进制搜索检查数组的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40613849/

相关文章:

c# - 检测 C# 代码中的递归调用

python - 在指定的分离度内交 friend

vba - Excel 查找速度与 VBA 二进制搜索?

algorithm - 最大数量的超越者的二进制搜索解决方案

c++ - 检查用户是否输入了空白 C++

c++ - 静态数组缓冲区分配

c++ - 这是boost库中的错误吗

haskell - 折叠函数不断切换var位置

c - 二分查找出现无限循环,为什么?

c++ - C++ 模板中变量后面的 "&"是什么?