-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);
我試圖找到它的值是143所以常用3 [X] = 143,其中發現x爲目標二進制搜索有序排列問題
我數組索引嘗試了帶斷點的調試器,但它並沒有給我太多的信息或細節。
我從調試器有:所以檢測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的索引。所以arr [x] = 143,其中發現x是目標。它總是返回0。 – BUFFGUY
將來嘗試在你的問題中包含這些信息,這可能是反對票的原因。 – jcolemang