-5
int arr[] = {21, 44, 56, 76, 89, 91, 102, 120, 143, 167, 242, 291}; //array.length == 11.
int goal = 143;
int i = (arr.length - 1)/2;
int upper = arr.length -1;
int lower = 0;
int found = 0;
boolean foundYes = false;
int j;
while (foundYes = false) {
if(arr[i] > goal) {
upper = i;
i = (upper - lower)/2;
} else if(arr[i] < goal) {
lower = i;
i = (upper - lower)/2;
} else if(arr[i] == goal) {
found = i;
foundYes = true;
break;
}
}
System.out.println(found);
私はそうは[X] = Xを見つけることが目標バイナリ検索規則配列問題
Iである143、ARR値は143であるため、配列にインデックスを見つけようとしていますブレークポイントでデバッガを試しましたが、多くの情報や詳細を教えてくれませんでした。
は、私は、デバッガから得たもの:は、だから、arr[i] == arr[5] == 91 < 143
ことを検出したが、それは何も変化しないと問題がここにある何found==0
として返されましたか?
編集:私はそれが働いて持って:
int arr[] = {21, 44, 56, 76, 89, 91, 102, 120, 143, 167, 242, 291}; //array.length == 11.
int goal = 143;
int i = (arr.length - 1)/2; //first arr[i] = 91.
int upper = arr.length -1;
int lower = 0;
int found = 0;
boolean foundYes = false;
int j;
while (foundYes == false) {
if(arr[i] > goal){
upper = i;
i = upper + (upper - lower)/2;
}
else if(arr[i] < goal){
lower = i;
i = lower + (upper - lower)/2;
}
else if(arr[i] == goal){
found = i;
foundYes = true;
break;
}
}
System.out.println(found);
}
}
正確に何をしようとしているのか、正確に何が問題になっているのでしょうか? – jcolemang
@jcolemang、値が143の配列のインデックスを検索しようとしています。したがって、xを見つけることが目標であるarr [x] = 143です。常に0を返すだけです。 – BUFFGUY
将来、あなたの質問にその情報を含めるようにしてください。これはおそらく下位票の理由です。 – jcolemang