私は、Javaプログラミングを学習し、炭の配列にシンボルを見つけるために、バイナリ検索を使用するプログラムを作っています。しかし、私がのシンボルがでないとでないとの配列で検索しようとすると、私のプログラムは無限のサイクルになります。そのようなシンボルが配列にない場合、どのようにエラー・サインを作成するのか分かりません。ここに私のプログラムのコードですJavaのBinarySearchプログラム
import java.lang.reflect.Array;
import java.util.Arrays;
public class Main {
public static void main(String[] args){
char[]arr = {'a','d','f','l','o','z'};
find(arr,'m');
}
public static void find(char[]arr,char ch){
int last = arr.length-1;
int mid=last;
while (arr[mid] != ch){
if (arr[mid]<ch){
mid = (last+mid)/2;
}
else{
last=mid;
mid=last/2;
}
}
System.out.print(mid);
}
}
ありがとうございます。
変更されていないものを見つけるためにデバッガを実行します。注: 'mid == last/2'の場合、これは何も変更されません。 –
あなたは暗黙のうちに検索の下限のインデックスが常に0であると仮定しています。良い教科書またはインターネット上の "バイナリ検索"の説明をチェックしてください。 – laune
@PeterLawrey 'mid = last/2'より前の' last = mid'は、 "何も変わらない"ように思われます。しかし、「最初の」遺跡のパフォーマンスはありません。 – laune