UniProMax
Anmelden
Programmiergrundlagen

Arrays und Listen

Geordnete Sammlungen mit Index-Zugriff. Statisches Array (fixe Größe) vs dynamische Liste (ArrayList, list). Welche Operationen sind O(1), welche O(n)? Klausurwichtige Datenstruktur Nummer 1.

4LerneinheitenVoraussetzungen:SchleifenFunktionen
Sprache wählen
Sprache
Lerneinheit 1 von 4java + python

Statisches Array

Ein statisches Array hat eine feste Größe, die beim Anlegen festgelegt wird und sich danach nicht mehr ändert.

Größe steht fest. Du kannst Werte lesen und überschreiben, aber nicht hinzufügen oder löschen.

In Java ist das die klassische int[]-Notation. Python kennt diese Variante praktisch nicht — list ist dort immer dynamisch.

Anlegen und Zugreifen

java// snippet
// Größe direkt beim Anlegen festlegen
int[] noten = new int[5];        // [0, 0, 0, 0, 0]

// Mit Werten initialisieren
int[] tage = {31, 28, 31, 30, 31};

// Zugriff per Index
int erste = tage[0];             // 31
tage[1] = 29;                    // Schaltjahr — set
int laenge = tage.length;        // 5 — feste Länge
Java int[]: Größe in eckigen Klammern beim Anlegen. tage.length ist read-only — Größe ist fix.

Operationen + Komplexität

OperationJavaKomplexität
get(i) — Element an Position lesenarr[i]O(1)
set(i, x) — Element an Position überschreibenarr[i] = xO(1)
length — Größe abfragenarr.lengthO(1)

Beide Hauptoperationen sind O(1): das Array kennt seinen Speicheradressen-Anfang, und Position ii liegt direkt iElementgro¨ßei \cdot \text{Elementgröße} Bytes weiter. Der Computer kann sofort dahin springen.

Was nicht geht

  • push / append: kein Hinzufügen
  • pop / remove: kein Entfernen
  • insert / unshift: kein Einfügen
  • resize: keine Größenänderung

Wenn du diese Operationen brauchst, musst du auf eine dynamische Liste umsteigen. Mehr dazu im nächsten Tab.

Wann statische Arrays?

  • Wenn die Größe vorher bekannt und fest ist (z.B. 12 Monate, 7 Wochentage)
  • Wenn du maximale Performance und minimalen Speicher brauchst
  • Bei Multi-dimensionalen Arrays (Matrizen) — meist als statische 2D-Arrays
  • In der Algorithmik wenn die Anzahl der Elemente vorher feststeht

Probier es selbst

Index-Zugriff und set in Aktion. Beide Operationen O(1), keine Größenänderung möglich.

Lade Visualisierung...

Klausur-Trick: arr.length (Java) ist kein Methodenaufruf, sondern eine Eigenschaft. Daher ohne Klammern. Bei Strings und ArrayList sind es dagegen Methoden mit Klammern: s.length(), list.size().