Hi,
dank eurer Hilfe habe ich es mittlerweile geschafft mein Array zu sortieren.
Auf diesem Array habe ich abfragen, die momentan noch von oben nach unten bspw. Gleichheit einer Eigenschaft eines Objekts abfragen und wollte eine effiziente Suche einbauen.
Meine Frage hierbei ist
1. gibt es effiziente Suchen, wenn die Suche mehr als 1 Ergebnis liefern soll? Ich habe mir viele Algorithmen angeguckt, die aber alle nur darauf ausgelegt sind ein Objekt zu liefern.
2. Habe ich jetzt erstmal die binäre Suche angeschaut, der Code lautet
Meine Frage ist nun wie ich diese auf meinem Array "flughaefen" laufen lasse?
funktioniert nämlich nicht. Zur Erklärung kann ich weiterhin sagen, dass der airportcode eine Eigenschaft eines Objekts Flughafen ist
Danke vorab
dank eurer Hilfe habe ich es mittlerweile geschafft mein Array zu sortieren.
Auf diesem Array habe ich abfragen, die momentan noch von oben nach unten bspw. Gleichheit einer Eigenschaft eines Objekts abfragen und wollte eine effiziente Suche einbauen.
Meine Frage hierbei ist
1. gibt es effiziente Suchen, wenn die Suche mehr als 1 Ergebnis liefern soll? Ich habe mir viele Algorithmen angeguckt, die aber alle nur darauf ausgelegt sind ein Objekt zu liefern.
2. Habe ich jetzt erstmal die binäre Suche angeschaut, der Code lautet
Code:
public int binarySearch(int[] a, int x) {
int k; // variable to hold the index or -1
int i,j; // lower and upper array bounds
i = 0;
j = a.length - 1; // initial array bounds
while (i <= j) {
k=(i+j)/2; //choosekinthemiddle
if (a[k] == x) return k; // found x
if(x<a[k]) j=k-1;
else i = k + 1; // update bounds
}
return -1;
}
Code:
// Frage den Benutzer nach dem Airportcode des gesuchten Flughafens
out.print("\nSuche Airport mittels Airportcode. Gebe hierzu den Airportcode ein (bspw. ZRH für Zurich Airport): ");
String eingabe = input.next();
// Zeige den (original) Datensatz (=Flughafen), der diesen Airportcode hat
out.println("\nResultat:");
binarySearch(flughaefen, eingabe)
Code:
// Konstruktor. Wir haben uns entschieden, die eingelesene Zeile hier zu zerlegen und in die einzelnen Felder aufzuteilen.
Flughafen(String zeile) {
// Zerlege die einzelne Zeile in Spalten (separiert durch ",")
String[] felder = zeile.split(",");
// Lese den Flughafennamen ein. Entferne die "double-quotes".
this.airport = String.valueOf(felder[3]);
this.airport = this.airport.replace("\"", "");
// Lese den Airpordcode ein, sofern er existiert (!). Entferne die "double-quotes".
if (felder.length > 13) {
this.airportcodes = String.valueOf(felder[13]);
this.airportcodes = this.airportcodes.replace("\"", "");
}
...
Danke vorab