현재 작업하고있는 프로젝트에서 필수적이므로이 코드를 사용하려고합니다.코드의 오류 (도움이 필요함)
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 클래스에 오버로드 된 정적 메서드가 있습니다. 여기에 있습니다 : https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html – prsvr
main()에서 x의 값과 배열을 출력하십시오. –
'binary_search' 메소드에 문제가 있습니다. 항상 올바른 결과 인 3과 -1을 반환합니다. 그것에 대해 생각해보십시오. 내가 그것을 실행하면 "끝없는 루프"오류가 없었다. – TheQuestioner