please forgive me if i'm not allowed to ask this question here.
i need help in writing a generic method. this question is from the previous exam:
Dann soll für ein gegebenes Fahrzeug im Vector gesucht werden, ob dort ein gleichschweres
Fahrzeug enthalten ist. Als Algorithmus zur Suche benutzen Sie die Binäre Suche, zum vergleichen
benutzen Sie istSchwerer(). Erstellen Sie in der Applikation eine generische statische Methode
binaereSuche (Vector<T> vec, T a, int links, int rechts).
Der Typparameter T soll Fahrzeuge und Unterklassen erlauben. Der Methode wird ein Vector von T
und ein Element vom Typ T sowie die Indizes des aktuellen Intervalls übergeben. Die Methode gibt
das gefundene Element aus oder meldet erfolglose Suche.
Testen Sie Ihr Programm auf erfolgreiche/erfolglose Suche, sowie Suchen von Elementen am Anfang
und am Ende des Vectors.
Binäre Suche funktioniert folgendermassen: Beim Aufruf der Methode binaereSuche() werden die
Indizes (rechts/links) übergeben, innerhalb derer gesucht werden soll, anfänglich von Null bis
Länge des Vectors. Dann wird das zu suchende Element X mit dem Element M in der Mitte des
Vectors (Index: (links+rechts)/2) verglichen.
Es gibt vier Fälle. 1. Ist X==M, gebe X aus, fertig. 2. Falls die komplette Liste durchsucht wurde (also
links==rechts), auch fertig. 3./4. Falls sich X in der unteren bzw. oberen Hälfte des Vectors
befindet, ruft man die binäre Suche mit den Indizes: (links, (links+rechts)/2) bzw.: (1+
(links+rechts)/2, rechts) auf.
and there isnt any sintax error but it didnt work quiet the way it suppose tobe :
public static <T extends Auto> void binaereSuche(Vector<T> vec,T a,int l,int r){
int m = (l+r) /2;
int x = a.getGewicht();
if (vec.get(m).getGewicht() == x){
System.out.println(a);
}
if (l == m){
System.out.println("Es gibt kein gleichschweres Auto.");
}
if (a.istSchwerer(vec.get(m))){
binaereSuche(vec, a, (1+((l+r)/2)), r);
}
else
binaereSuche(vec, a, l, (l+r)/2);
}
once again. if i'm not allowed to ask this here please forgive me.