0

我正在尝试编写二进制搜索算法,但是Geeks for Geeks 练习问题 Binary Search产生以下错误:

Runtime Error:
Runtime ErrorException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 

  Index 222 out of bounds for length 5

    at Solution.binarysearch(GFG.java:44)
    at GFG.main(GFG.java:22)

到目前为止我写的是,

class Solution {
    int binarysearch(int arr[], int n, int k){
        
        if (arr == null) return -1;
        
        int begin = 0;
        int end = k;

            for (; begin < end;)
            {
                int mid = (begin + end) / 2;
                if (arr[mid] == n) return mid;
                if (arr[mid] > n)
                {
                    // in left part
                    begin = begin;  // for debug
                    end = mid; 
                }
                else
                {
                    // in right part
                    begin = mid + 1;
                    end = end; // for debug
                }
            }

            return -1;
    }
}

Geeks for Geeks 问题陈述和示例:

给定一个大小为 N 的排序数组和一个整数 K,使用二分搜索找到 K 在数组中出现的位置。

示例 1

输入:N = 5 arr[] = {1 2 3 4 5} K = 4
输出:3
解释:4 出现在索引 3 处。

4

1 回答 1

0

替换int end = k;int end = n-1;

k是你必须找到的数字,n是数组大小

于 2021-05-16T10:15:50.497 回答