私はバイナリ検索を行っています。配列とキー値をユーザ入力にしたいので、ここでスキャナを使用しています。バイナリコードでエラーが発生しました
私はこのコードを書いていますが、ユーザー入力としてキー値を与えたときになぜ機能しないのかわかりません。バイナリ検索は何ですか、また、スタックオーバーフローの他の質問誰もがhelp.Myコードができれば、私はそう把握することはできませんコーディングの問題があります:
//Program for getting a key value doing Binary Search
import java.util.Scanner;
public class Bin_Search{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int a[] = new int[n];
for(int i =0; i<n; i++)
a[i]= scan.nextInt();
for(int i =0; i<n; i++)
System.out.print(a[i] + " ");
System.out.println("Enter the value you want to find");
int key = scan.nextInt();
Bin_Search bin = new Bin_Search();
System.out.println("position is" + bin.b_search(a,key));
}
//Method to perform binary search
public int b_search(int arr[], int key)
{
int n = arr.length-1;
int lo = 0;
int hi = n-1;
int mid = (lo+hi)/2;
while(lo<=hi)
{
if(a[mid]>key)
hi = mid-1;
else if(a[mid]<key)
lo = mid+1;
else
return mid;
}
return -1;
}
}
あなたはIDEを持っていますか?それらのほとんどは無料です。そのIDEでデバッガを使用する方法を学びます。そのような質問をもう一度する必要はありません。最も一般的なIDEは、IntelliJ IDEA(私の選択)、Eclipse、NetBeansです。 – user3707125
入力の例、期待する出力、入手する出力を挙げてください。 「うまくいきません」と私にはあまりにも曖昧です。 –
私が間違っていると私を修正しますが、配列が必ずしもソートされていないように見えます。つまり、バイナリ検索は必ずしも機能しません。バイナリ検索にはソートされたデータが必要です。 –