Grundlagen der Programmierung: Datenstrukturen

Suchfunktionen für Arrays

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Viele Sprachen bieten eine eigene Suchfunktion für Arrays an. Das heißt dann aber nicht, dass nicht trotzdem im Hintergrund eine lineare Suche gestartet wird.

Transkript

Es stimmt schon, dass in den meisten Sprachen neben dem Einsatz fixer Arrays Verhalten angeboten werden, die eine Größenveränderung erlauben, eine Sortierfunktion unterstützen und wir werden oft Funktionalitäten antreffen, die es uns erlauben, in Arrays nach bestimmten Werten zu suchen. Oder manchmal wollen Sie wissen, ob ein Wert existiert und wenn ja, wo innerhalb des Arrays er zu finden ist. Quer durch die unterschiedlichen Sprachen. Der gebräuchlichste Auftrag für die zuerst erwähnte Funktionalität ist der, wo wir nur ein Ja oder Nein wissen wollen. Sehen wir uns das mal hier an. myArray beherbergt einen Wert und gibt lediglich einen Boole'schen Wert zurück. Typischerweise wollen wir nicht nur wissen, ob ein Wert existiert oder nicht. Wir wollen wissen, an welcher Position innerhalb des Arrays er sich befindet. Der gebräuchlichste Term für die Methode oder Funktion ist indexOf. Einmal mehr weise ich drauf hin, dass dies kein spezieller Code ist, den ich da wiedergebe. Das Verhalten kann Teil des Array-Objekts sein. Sie können aber genau so etwas in der Art von myArray.indexOf oder so schreiben. Oder in anderen Sprachen brauchen Sie eine separate Funktion oder Methode, der Sie diese zwei Parameter übergeben können. Das eine ist der Array, den Sie suchen. Das andere ist der Wert, nach dem Sie suchen. Wenn Sie ein Integer-Ergebnis erwarten, die Position des Index, oder was auch immer Sie suchen, wenn der Wert im Array nicht gefunden wird, bekommen Sie normalerweise einen Ausgabewert wie -1 um zu zeigen, dass der Wert nicht gefunden wurde. Aber es ist eine sehr verbreitete Funktionalität. Es ist indexOf in Java. indexOfObject in Objective C. Es ist indexOf in JavaScript, es ist indexOf in C# und Visual Basic. Es ist nur index in Python oder find_index in Ruby. Alle machen genau dasselbe, wie ich hier zeige. Sie finden aber nicht immer ein contains-Äquivalent. Es gibt nicht immer ein Verb für den Boole'schen Wert wahr oder falsch, ob ein Objekt existiert oder nicht. Was Sie aber auf jeden Fall tun können, ist indexOf aufzurufen und dann das eigentliche Ergebnis zu ignorieren, wenn's nur darum geht festzustellen, ob ein Element sich im Array befindet. Denn das ist ja des Pudels Kern. Welche Sprache auch immer, welche Syntax auch immer, jedes Mal, wenn Sie ein Statement mit den Worten indexOf schreiben, bezwecken Sie etwas anderes als wenn Sie contains verwenden würden. Die Leichtigkeit der Schreibweise dieses Statements sollte Platz lassen für ein paar Gedanken. Sie sollten eigentlich innerlich zusammenzucken. Es könnte nämlich ein lächerlicher Arbeitsaufwand sein, aber es könnte genau so die Folge sein, dass dann eine lineare Suche für 1 Million Elemente startet. Und nur weil Sie keinen linearen Suchcode geschrieben haben, sondern nur ein kurzes Statement wie indexOf oder contains, heißt das nicht, dass Sie irgendetwas effektiver gemacht haben. Es könnte in einer fürchterlichen Performance enden. Was ist also die Alternative? Es könnte sein, dass es gar keine gibt. Wenn Sie wirklich ein Array mit unstrukturierten Daten haben, dann ist da vielleicht keine andere Option, als eine totale, brute-force, lineare Suche zu starten. Wie auch immer. Sie können auch die Daten innerhalb Ihrer Datenstruktur ordnen. Das macht Suchen viel effektiver und ist eine Methode, um die Performance auch etwas besser gestalten zu können.

Grundlagen der Programmierung: Datenstrukturen

Erhalten Sieeinen klaren Eindruck von Datenstrukturen und deren Eigenheiten und verstehen, wie Sie diese am besten einsetzen können – ganz unabhängig von den einzelnen Programmiersprachen.

2 Std. 51 min (29 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!