Warum sollte man Lineare Listen (arrays) als Datenstruktur verwenden?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Beide Datenstrukturen haben ihre Vor- und Nachteile.

Die beim Anlegen eines Arrays vorzugebende Größe des Arrays ist durchaus ein Nachteil.

Wenn man das Array sortiert hat, kann man in O(log(n)) suchen. Wozu man da viel Extraspeicher benötigt, ist mir unklar.

Für Arrays funktioniert übrigens auch Heapsort, ohne Extraspeicher.

Für einen balancierten binären Baum braucht man für jeden Knoten zusätzlich zwei Pointer und mindestens zwei Extra-Bits, für ein Array nicht.

Die Implementierung von Bäumen ist nicht gerade trivial.

Die Tatsache, dass im Array die Elemente nebeneinander liegen, wird zum Vorteil, wenn man den Index eines Elements kennt oder einfach nur über alle Elemente iterieren will.

In der Praxis verwende ich beide Strukturen, je nach Bedarf.

Weil Bäume keinen Lookup des n-Ten Elements in konstanter Zeit können. Und weil nebeneinander liegende Werte im Array auch nebeneinander im Speicher liegen.

Arrays und Listen sind zwei verschiedene Datenstrukturen.


J0T4T4  30.01.2023, 15:58

Wo unterscheiden sich Arrays und Listen?

Zwnow  30.01.2023, 21:40
@J0T4T4

Bei Arrays musst du eine Größe festlegen, für diese wird Speicher reserviert. Listen kannst du dynamisch vergrößern. Wie sich das mit dem Speicher bei Listen verhält weiß ich allerdings nicht aus dem Stehgreif.

W00dp3ckr  30.01.2023, 23:06
@J0T4T4

Eine klassische Liste ist eine Struktur, bei der jeweils ein Element den Zeiger aufs nächste Element enthält.

W00dp3ckr  30.01.2023, 23:07
@W00dp3ckr

Anhängen in O(1), sonst ist Zugriff auf ein beliebiges Element O(n)

J0T4T4  30.01.2023, 23:41
@W00dp3ckr

Das sind Linked Lists, Lists dürfte einfach nur der Oberbegriff sein.