1
目前卡在二分查找問題上,它要求我傳遞一個參數,並且是一個對象。 但是有可能這樣做?通常我會使用兩個參數來解決這個問題。 通常用二進制搜索我用 - >通過傳遞一個對象進行手動二分搜索
int binarySearch(int[] list, int searchItem)
{
int mid=0;
int start=0;
int end=list.length-1;
boolean found=false;
//Loop until found or end of list.
while (start <= end && !found)
{
mid = (start + end)/2;
if (list[mid] == searchItem)
found = true;
else
if (list[mid] > searchItem)
end = mid - 1;
else
start = mid + 1;
}
if(found)
return mid;
else
return(-1);
}
但是,它可能只是在傳遞這樣一個參數?我需要搜索一個數組列表。
public int binarySearch(Moon searchItem){
int mid = 0;
int start = 0;
int end = moons.size() -1;
boolean found = false;
while(start <= end && !found){
mid = (start + end)/2;
if(moons.get(mid).equals(searchItem)){
found = true;
}
else{
if(???)) {
}
else
etc etc
}
}
return 0;
}
如果你可以用'moons.get(mid)'替換'list [mid]',那麼你可以做兩次!用'moons.get(mid)'替換你的'???'! (然後作爲Azodious提到你需要比較對象,但是你並沒有真正發佈很多上下文 - 看起來你有很多來自某人的代碼,所以你的Moon可能已經有了一個「compareTo」方法) –