私が現在取り組んでいるプロジェクトにとって不可欠なので、このコードを動作させようとしています。コードのエラー(ヘルプが必要です)
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 + ".");
}
}
私は結果が通常の入力であり、配列が機能すると期待しています。 私が実際に得られる結果は、「おそらく無限ループを起こしている」というタイムアウトエラーです。
だけで簡単にヒント場合バイナリ検索を自分で実装することで問題を抱えていますが、バイナリ検索を実行する配列クラスにオーバーロードされた静的メソッドがあります。ここではhttps://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html – prsvr
main()のxの値と同様に配列を出力します。 –
'binary_search'メソッドに問題があります。常に正しい結果、3と-1を返します。それについて考える。私はそれを実行するときに "無限ループ"エラーがありませんでした。 – TheQuestioner