hi leute, das hier wird mein erster Beitrag werden, hoffe das ich es richtig mache und glück habe die richtige hilfe zu finden So, ich sitze vor folgender Übung: Die binäre Suche erhält als Eingabe ein sortiertes Feld als Suchraum sowie das gesuchte Element und liefert als Rückgabewert den Index des gesuchten Elementes im Suchraum. Der Algorithmus arbeitet folgendermaßen:
Als erstes wird das mittlere Element geprüft. Es kann kleiner, größer oder gleich dem gesuchten Element sein. Ist es kleiner als das gesuchte Element, muss das gesuchte in der hinteren Hälfte sein(Falls vorhanden). Wenns größer ist muss es in der vorderen Hälfte suchen und wenns gleich ist, ist die suche beendet. In der zu untersuchenden Hälfte und in den folgenden wird das gleiche verfahren angewendet. Also jedesmal bestimmt das mittlere Element ob und wo weitergesucht wird.
Nun sollen wir die Metode public int search... siehe unten, vervollständigen. Welche den übergebenen String mittels der rekursiven binären Suche im intern gespeicherten Feld sucht und den Index des gesuchten Elementes zurückgibt.
Ganz schön viel reingeschrieben, aber wollte so verständlich wie möglich machen, damit man soweit mein Problem versteht.
Aufgabe:
Mein Ansatz für die genannte Methode:
Könnt ihr mir sagen ob ich auf dem richtigen weg bin und evtl was noch fehlt oder ich nachschlagen sollte. Vorallem bei Zeile 8(s.get) meckert Eclipse rum. Weil .get bei String nicht geht, aber weiß nicht was ich anders machen soll. Vielen Dank im Voraus
Wenn ich was vergessen haben sollte, hole ich es nach.
Als erstes wird das mittlere Element geprüft. Es kann kleiner, größer oder gleich dem gesuchten Element sein. Ist es kleiner als das gesuchte Element, muss das gesuchte in der hinteren Hälfte sein(Falls vorhanden). Wenns größer ist muss es in der vorderen Hälfte suchen und wenns gleich ist, ist die suche beendet. In der zu untersuchenden Hälfte und in den folgenden wird das gleiche verfahren angewendet. Also jedesmal bestimmt das mittlere Element ob und wo weitergesucht wird.
Nun sollen wir die Metode public int search... siehe unten, vervollständigen. Welche den übergebenen String mittels der rekursiven binären Suche im intern gespeicherten Feld sucht und den Index des gesuchten Elementes zurückgibt.
Ganz schön viel reingeschrieben, aber wollte so verständlich wie möglich machen, damit man soweit mein Problem versteht.
Aufgabe:
Java:
public class BinarySearcher {
private String[] feld;
public BinarySearcher(String[] s) {
this.feld = s;
}
public int search(String s, int von, int bis) {
//...
public static void main(String[] args) {
String[] suchraum = new String[] {"adipiscing", "amet", "consectetur",
"dolor", "elit", "ipsum", "lorem", "mauris", "sit", "vel"};
String[] tests = new String[] { "lorem", "vel", "adipiscing", "amat", "a", ""};
BinarySearcher bs = new BinarySearcher(suchraum);
for(String t : tests) {
System.out.println(bs.search(t, 0, suchraum.length - 1));
}
}
}
Mein Ansatz für die genannte Methode:
Java:
public int search(String s, int von, int bis) {
von = 0;
bis = s.length();
if(von < bis) {
int mitte = ((von + bis)/2) ;
String s1 = s.get(mitte);
if (s1.compareTo(s)<0)
von = mitte+1;
else if(s1.compareTo(s)>0)
bis = mitte;
else
return mitte;
}
return -1;
}
Könnt ihr mir sagen ob ich auf dem richtigen weg bin und evtl was noch fehlt oder ich nachschlagen sollte. Vorallem bei Zeile 8(s.get) meckert Eclipse rum. Weil .get bei String nicht geht, aber weiß nicht was ich anders machen soll. Vielen Dank im Voraus
Wenn ich was vergessen haben sollte, hole ich es nach.