c - 二分查找算法的平均性能?

标签 c algorithm binary-search

http://en.wikipedia.org/wiki/Binary_search_algorithm#Average_performance

BinarySearch(int A[], int value, int low, int high)
{
    int mid;
    if (high < low)
        return -1;
    mid = (low + high) / 2;
    if (A[mid] > value)
        return BinarySearch(A, value, low, mid-1);
    else if (A[mid] < value)
        return BinarySearch(A, value, mid+1, high);
    else
        return mid;
}

如果我要查找的整数始终在数组中,任何人都可以帮我编写一个可以计算二分搜索算法平均性能的程序吗?

编辑:我知道我可以通过实际运行程序并计算调用次数来完成此操作,但我在这里尝试做的是在不调用函数的情况下完成此操作。

edit2:KennyTM:这是一个时间复杂度,我正在尝试计算平均调用次数。例如,在 A[2] 中查找整数的平均调用次数为 1.67 (5/3)

最佳答案

您不需要“程序”。您可以只计算对 BinarySearch 方法的调用次数。

您可以通过传递另一个参数(通过指针)或使用全局变量轻松地做到这一点。在这种情况下 - 它是一个玩具 - 所以我可能会快速而肮脏地使用全局。

关于c - 二分查找算法的平均性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2709021/

相关文章:

c++ - 编译器错误与链接器错误?

arrays - 计算反转?

python - 查找孤立子集的正确算法是什么

java - 使用二进制搜索在排序的多维数组中查找数字

java - 如何通过 JNI 将 HashMap 从 Java 发送到 C

c - 如果有条件,则为内部变量赋值 - 总是不好的做法?

c++ - C/C++ : Flush output before abnormal termination

python - 将两个数字编码为 4 位二进制字符串

python - 二进制搜索中的无限循环

javascript - 如果我使用两个 "if"语句而不是仅使用一个 "if/else"语句,为什么二进制搜索算法不起作用?