【发布时间】:2017-12-04 23:28:28
【问题描述】:
我正在尝试使此代码正常工作,因为它对于我目前正在从事的项目至关重要。
import java.util.Scanner;
public class BinarySearch
{
int binarySearch(int arr[], int l, int r, int x)
{
if (r>=l)
{
int mid = l + (r - l)/2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binarySearch(arr, l, mid-1, x);
return binarySearch(arr, mid+1, r, x);
}
return -1;
}
public static void main(String args[])
{
BinarySearch ob = new BinarySearch();
Scanner sc = new Scanner(System.in);
System.out.println("Enter number of inputs:");
int i = sc.nextInt();
int arr[] = new int[i];
System.out.println("Enter array of inputs:");
for(int j = 0;j < i; j++){
arr[j] = sc.nextInt();
}
System.out.println("What number do you want the index from");
int n = arr.length;
int x = sc.nextInt();
int result = ob.binarySearch(arr,0,n-1,x);
if (result == -1)
System.out.println("FAILURE");
else
System.out.println("Element found at index "+result + ".");
}
}
我希望结果是正常输入,数组可以在其中运行。 我得到的实际结果是“可能有无限循环”的超时错误。
【问题讨论】:
-
如果您在自己实现二进制搜索时遇到问题,只是一个快速提示,Arrays 类中有重载的静态方法可以执行二进制搜索,请看这里:docs.oracle.com/javase/7/docs/api/java/util/Arrays.html
-
打印出你的数组以及 main() 中 x 的值。
-
您的
binary_search方法存在问题。它总是返回正确的结果,3 和 -1。想想看。运行时我没有出现“无限循环”错误。
标签: java arrays int binary-search