java - 二分查找的比较次数

标签 java search count binary

是否可以计算递归二分查找的比较次数?如果是这样,怎么办?

这是我所指的搜索:

//binary search
public static int binarySearch(int[] items, int start, int end, int goal)
{
    if (start > end)
        return (-1);
    else
    {
        int mid = (start + end)/2;
        if (goal == items[mid])
            return (mid);
        else
        if (goal < items[mid])
            return (binarySearch(items, start, mid - 1, goal));
        else
            return (binarySearch(items, mid + 1, end, goal));
    }
}//end binarySearch

最佳答案

在方法外部声明计数变量。然后每次调用该方法时加 1。

long count = 0;
//binary search
public static int binarySearch(int[] items, int start, int end, int goal)
{
    count += 1
    if (start > end)
        return (-1);
    else
    {
        int mid = (start + end)/2;
        if (goal == items[mid])
            return (mid);
        else
        if (goal < items[mid])
            return (binarySearch(items, start, mid - 1, goal));
        else
            return (binarySearch(items, mid + 1, end, goal));
     }
}//end binarySearch

关于java - 二分查找的比较次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23463784/

相关文章:

java - 如何让 hibernate 打印出命名查询有什么问题?

java - 如何修复此单人骰子游戏(4 - 4 面骰子)的循环?扫描仪输入无法产生正确输出的问题

python - 通过滚动在 TreeView 中搜索

python - 如何使用正则表达式在句子内搜索 - 不区分大小写

search - 搜索引擎如何识别网站上的搜索框?

Java 再次 "Cannot find symbol"

java - 快速重新着色位图

powershell 计算文件夹中的文件并创建带有文件名结果的文本文件

java - 要求用户输入整数,然后对它们进行计数

mysql - 如何在 MySQL 中按两列比较两个查询?