嘿我想找到一個二進制搜索的比較數我已使這種方法來計算比較數。然而,它總是返回-1,因爲它沒有找到numsearch,儘管數組包含數字。 這是我的方法.. count指的是比較的數量。二進制搜索方法的循環數
public static int BinarySearch (int n, Integer[] ran) {
int low = 0;
int high = ran.length-1;
int count = 0;
int middle;
while (low<=high) {
count++;
middle = (high - low)/2;
if (ran[middle] == n) {
return count;
}
else if (ran[middle] > n) {
high = middle - 1;
}
else {
low = middle + 1;
}
}
return -1;
}
我試過了,但是它返回2或者繼續循環,我必須手動停止它 – Dom
代碼本身並不是真正正確的。也許你應該檢查你的實現。我會改變'中間=(高 - 低)/ 2;'到'中等=(高+低)/ 2;' – john16384
謝謝兄弟,我已經改變了代碼。然而,它給了我5或4 – Dom