【问题标题】:Using binary search to find the index of the target number使用二分查找查找目标编号的索引
【发布时间】:2022-07-26 23:48:00
【问题描述】:

这是我第一次使用这个平台提问。我想知道下面的代码有什么问题,它们没有在 main 的末尾打印出目标编号的索引。怎么了?祝阅读这篇文章的人度过愉快的一天。

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;
    }
}



【问题讨论】:

  • 无关:请遵守 java 命名约定
  • 您在搜索什么输入号码?您的实际输出和预期输出是多少?

标签: java


【解决方案1】:

您没有重新计算,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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2013-02-16
    • 1970-01-01
    相关资源
    最近更新 更多