こんにちはすべて私はバイナリ検索プログラムで作業しています。私のアルゴリズムは正しいですが、ドライバプログラムでプログラムを実行すると、このような表の代わりに値 "false"が返されます。 Table output(LINK)バイナリ検索プログラムの印刷偽
ここは私のドライバプログラムとメインプログラムです。
public class TestResulter {
public static void main(String[] args) {
//Resulter resulter = new Resulter();
int numberOfItems = 10000;
int item;
int a[ ] = new int[ numberOfItems ];
for(int i = 0; i < 20; i++)
{
item = Resulter.randomitem(a);
System.out.println(Resulter.binarySearch(a , item));
}
}
}
私の主なプログラムはbinarySearchアルゴリズムです。
import java.util.Random;
public class Resulter extends TestResulter {
private static class Result {
public Boolean found; // true if found, false if not found
public int index; // index where item was found, -1 if not found
public int steps; // number of comparisons performed
public Result(boolean f, int ind, int st) {
found = f;
index = ind;
steps = st;
}
@Override
public String toString() {
return "Result [found=" + found + ", index=" + index + ", steps=" + steps + "]";
}
}
public static boolean binarySearch(int[] a, int item) {
int start=0, end=a.length-1;
while(end>=start) {
int mid = start + ((end - start)/2);
if (a[mid] == item)
return true;
if (a[mid] > item)
end = mid-1;
else start = mid+1;
}
return false;
}
public static int randomitem (int[] a) {
int i;
Random random = new Random();
int item = random.nextInt(10999);
for(i = 0; i < 10000; i++)
{
a[ i ] = random.nextInt(10000);
}
return item;
}
}
私のプログラムは、私のリニアサーチプログラムから私の画像に同様の出力を持たせたいと思っています。
配列 'a'を順序付けられていない乱数で埋めていることを正しく理解していますか?バイナリ検索は、ソートされた配列に対してのみ機能します。 – Beethoven
かなり、だから私はアルゴリズムの仕事を取得し、実際にテーブルを印刷する方法です。 –
配列を塗りつぶした後に配列がソートされることを宣言するために、コードのいくつかを改訂する必要があります。もう1つの問題は、 'binarySearch'メソッドが' Result'オブジェクトを返さず、 'boolean'を返すことです。私は以下のいくつかのコードで回答を掲示します。 – Beethoven