Derzeit stecken auf ein Problem mit der binären Suche, die mich fragt, um einen Parameter übergeben mit ist ein Objekt. Aber ist es möglich, dies zu tun ?? Normalerweise würde ich zwei Parameter für ein Problem wie dieses verwenden. Normalerweise mit binärer Suche verwenden I ->Manuelle binäre Suche durch die Übergabe nur eines Objekts
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);
}
Aber ist es möglich, in einem Parameter wie dies passiert gerade ?? Ich muss eine Array-Liste durchsuchen.
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;
}
Wenn Sie 'list [mid]' durch 'moons.get (mid)' ersetzen können, dann können Sie es zweimal tun! Ersetzen Sie Ihr '???' durch 'moons.get (mid)' auch! (Und dann, wie Azodious erwähnte, müssen Sie Objekte vergleichen, aber Sie haben nicht wirklich viele Kontexte gepostet - es sieht so aus, als hätten Sie eine Menge Code von jemandem bekommen, vielleicht hat Ihr Mond schon eine 'compareTo' Methode) –