当前位置: 首页 > 知识库问答 >
问题:

使用二进制搜索查找目标数的索引

文心思
2023-03-14

这是我第一次使用这个平台提问。我想知道以下代码有什么问题,它们没有在主代码末尾打印出目标数字的索引。发生了什么?祝那些阅读本文的人度过愉快的一天。

public class binarySearch {
    public static void main(String[] args) {
        Scanner keyboard=new Scanner(System.in);
        int target,index;
        int [] numArray={1,4,6,7,8,10,14,16,17,26,30,35,38,41};

        System.out.print("What do you want to find?");
        target=keyboard.nextInt();
        index=binarySearch(numArray, target);
        System.out.println("The element is found at index:"+index);
    }

    static int binarySearch(int [] numArray, int target){
        int left=0;
        int right=numArray.length-1;
        int mid=(left+right)/2;
        while(left<=right){
            if(numArray[mid]==target){
                return mid;
            }else if(target<numArray[mid]){
                right=mid-1;
            }else{
                left=mid+1;
            }
        }
        return -1;
    }
}



共有1个答案

房新翰
2023-03-14

您没有在循环内重新计算mid:

static int binarySearch(int [] numArray, int target){
    int left=0;
    int right=numArray.length-1;
    int mid=(left+right)/2;
    while(left<=right){
        mid=(left+right)/2;
        if(numArray[mid]==target){
            return mid;
        }else if(target<numArray[mid]){
            right=mid-1;
        }else{
            left=mid+1;
        }
    }
    return -1;
}
 类似资料:
  • 问题内容: 我有一个排序的数组,想要对它进行二进制搜索。 所以我想问一下Swift库中是否已有诸如sort等的东西?还是有类型独立版本可用? 当然,我可以自己编写它,但是我想避免再次发明轮子。 问题答案: 这是使用二进制搜索的通用方法:

  • 给定二叉查找树(BST)和整数val的根。 在BST中找到该节点的值等于val的节点,并返回以该节点为根的子树。如果这样的节点不存在,则返回null。 为什么'ans=root'不起作用??

  • 为什么当我看到二进制搜索的示例代码时,从来没有一个if语句来检查数组的开始还是结束是目标? 在本例中,如果目标是-1或20,搜索将进入递归。但是它添加了一个if语句来检查目标是否是mid,那么为什么不添加两个语句来检查它的左边还是右边呢?

  • 本文向大家介绍用C ++程序查找二进制搜索树的最小值,包括了用C ++程序查找二进制搜索树的最小值的使用技巧和注意事项,需要的朋友参考一下 它是一个寻找二叉搜索树的最小值的程序。 演算法 示例 输出结果

  • 二进制搜索是一种快速搜索算法,运行时复杂度为Ο(log n)。 这种搜索算法的工作原则是分而治之。 为使此算法正常工作,数据收集应采用排序形式。 二进制搜索通过比较集合的最中间项来查找特定项。 如果匹配发生,则返回项目的索引。 如果中间项大于项,则在中间项左侧的子阵列中搜索项。 否则,在中间项右侧的子阵列中搜索项。 该过程也在子阵列上继续,直到子阵列的大小减小到零。 二进制搜索如何工作? 要使二进

  • 我正在尝试实现一个二叉查找树,但是“搜索”函数对于除了根之外的每个条目都返回了错误的值。 该函数应返回其值与键参数匹配的节点的地址,如果节点不存在,则返回 NULL。 当我运行代码时,我得到以下内容: 我知道每个节点的“左”和“右”指针链接正确,因为“delAll”函数成功删除了所有节点。 将“cout”语句添加到“search”函数表明该函数似乎返回了正确的地址。为什么从主主调用时会打印错误的地