Qualifikationsphase Q1 · Themenfeld Q1.2

Q1.2 – Algorithmik systematisch aufbauen

Algorithmusbegriff, iterative Such- und Sortierverfahren, Effizienz als Bewertungsmaßstab

In E3 wurden Anweisungen, Kontrollstrukturen, Struktogramme und Funktionen aufgebaut. Q1.2 wechselt nun die Perspektive: Nicht einzelne Sprachmittel stehen im Zentrum, sondern Algorithmen als systematisch analysierbare Verfahren.

Als gemeinsamer Problemraum dienen Suche und Sortierung auf Arrays. Dadurch lassen sich Schrittlogik, Voraussetzungen, Darstellungen und Effizienz durchgehend an denselben Beispielen aufbauen.

Die anschließende Vertiefung in Q1.3 erweitert genau diese Grundlage um rekursive Modellierung, Vergleich iterativ vs. rekursiv und Teile-und-herrsche.

Kerncurriculum
Kerncurriculum kompakt
Anforderungen nach Kursniveau
Grundlegendes Niveau (Grundkurs und Leistungskurs)
Erhöhtes Niveau (Leistungskurs)
Algorithmusbegriff
Algorithmusbegriff: formale Grundlage
Definition, Eigenschaften und fachliche Bedeutung
Definition: Algorithmus
Ein Algorithmus ist eine endliche, eindeutige und ausführbare Schrittfolge zur Lösung eines Problems für eine Klasse von Eingaben.

Positivbeispiel: lineare Suche ist ein Algorithmus

Für a = [12, 7, 19, 5] und Suchwert 19 prüft die lineare Suche die Indizes 0, 1, 2 und stoppt beim Treffer. Jeder Schritt ist eindeutig beschrieben, ausführbar und endet spätestens nach a.length Vergleichen.

Gegenbeispiel: keine eindeutige Schrittfolge

„Suche irgendwie weiter, bis es passt.“ ist kein Algorithmus: kein klarer Abbruch, keine präzisen Regeln für den nächsten Schritt, keine verlässliche Übertragbarkeit auf beliebige Eingaben.

Eigenschaft Fachliche Präzisierung Beobachtbar in Such-/Sortierverfahren
Endlichkeit Der Ablauf endet nach endlich vielen Schritten. Schleifen laufen nur über begrenzte Indexbereiche.
Eindeutigkeit Jeder Schritt ist präzise und eindeutig festgelegt. Vergleichs- und Aktualisierungsregeln sind klar definiert.
Ausführbarkeit Jeder Schritt ist mit elementaren Operationen umsetzbar. Indexarithmetik, Vergleiche, Zuweisungen und Tauschoperationen.
Allgemeingültigkeit Das Verfahren gilt nicht nur für ein einzelnes Beispiel. Dieselbe Such- oder Sortierlogik gilt für beliebige Arraygrößen.

Algorithmik betrachtet Verfahren problemorientiert: Welche Voraussetzungen braucht ein Verfahren? Welche Schritte sind zentral? Wie verändert sich der Aufwand bei größeren Datenmengen?

Darstellungen
Darstellungen von Algorithmen
Struktogramm, Pseudocode/Code und Schrittlogik gezielt kombinieren

Dieselbe algorithmische Idee kann in verschiedenen Darstellungen erklärt werden. Q1.2 übernimmt die in E3 aufgebauten Darstellungsformen und nutzt sie systematisch.

Code/Pseudocode: präzise Ausführungslogik

int minimum(int[] a) {
    int min = a[0];
    for (int i = 1; i < a.length; i++) {
        if (a[i] < min) min = a[i];
    }
    return min;
}

Der Ablauf wird formal ausführbar beschrieben.

Struktogramm: sichtbare Ablaufstruktur

Minimumsuche als Strukturmodell

Kontrollstruktur, Iteration und Verzweigung werden auf einen Blick sichtbar.

Mini-Vergleich: dieselbe lineare Suche in drei Darstellungen

Beispiel: a = [4, 9, 2, 7, 5, 8], Suchwert 7.

1) Schrittbeschreibung (natürliche Sprache)
  1. Starte bei Index 0.
  2. Vergleiche aktuelles Element mit 7.
  3. Bei Ungleichheit gehe zum nächsten Index.
  4. Bei Treffer gib Index zurück, sonst nach letztem Element -1.
2) Code / Pseudocode
int linearSearch(int[] a, int key) {
    for (int i = 0; i < a.length; i++) {
        if (a[i] == key) return i;
    }
    return -1;
}
3) struktogrammnahe Darstellung
Suchalgorithmen
Iterative Suchalgorithmen
Lineare Suche als Referenz, binäre Suche als effiziente Alternative

Lineare Suche: Referenzverfahren ohne Vorbedingungen

Definition: lineare Suche
Ein Suchalgorithmus, bei dem die Elemente einer Liste nacheinander geprüft werden, bis der gesuchte Wert gefunden wird oder alle Einträge kontrolliert wurden.
boolean linearSuche(int[] a, int schluessel) {
    int i = 0;
    while (i < a.length && a[i] != schluessel) {
        i++;
    }
    return i < a.length;
}

Die Strategie ist robust und allgemein einsetzbar: Ein Element nach dem anderen wird geprüft. Die Zahl der Vergleiche wächst jedoch direkt mit der Datenmenge.

Ablaufbeispiel (linear): a = [14, 3, 9, 27, 18, 5, 11], Suche nach 18
  1. Index 0: 14 ≠ 18 → weiter.
  2. Index 1: 3 ≠ 18 → weiter.
  3. Index 2: 9 ≠ 18 → weiter.
  4. Index 3: 27 ≠ 18 → weiter.
  5. Index 4: 18 = 18 → Treffer, Abbruch mit Index 4.

Abgebrochen wird entweder beim ersten Treffer oder nach dem letzten geprüften Element.

Binäre Suche: effizient durch Halbierung des Suchbereichs

boolean binaereSuche(int[] a, int schluessel) {
    int links = 0, rechts = a.length - 1;
    while (links <= rechts) {
        int mitte = (links + rechts) / 2;
        if (a[mitte] == schluessel) return true;
        if (a[mitte] < schluessel) links = mitte + 1;
        else rechts = mitte - 1;
    }
    return false;
}
Definition: binäre Suche
Die binäre Suche ist ein Suchalgorithmus für sortierte Daten, bei dem pro Schritt nur das mittlere Element betrachtet und der Suchbereich halbiert wird.
Ablaufbeispiel (binär): a = [3, 7, 11, 14, 18, 24, 31], Suche nach 24
  1. Intervall [0..6], Mitte 3 → a[3] = 14 < 24 → rechte Hälfte [4..6].
  2. Intervall [4..6], Mitte 5 → a[5] = 24 = 24 → Treffer.
  3. Gedanklicher Kontrast: Hätte Mitte 5 nicht gepasst, wäre nur [6..6] oder [4..4] übrig.
  4. Jeder Schritt halbiert den Suchraum statt einzelner Elementprüfung.
Binäre Suche als Intervallfolge (Strukturmodell)

Beispiel: sortiertes Array mit 16 Werten, Suche nach einem großen Zielwert.

  • Problem wird verkleinert: Der relevante Bereich wird pro Schritt etwa halb so groß.
  • Teilproblem entsteht: „Suche im Restintervall“ hat dieselbe Struktur wie das Ausgangsproblem.
  • Brücke zu Q1.3: Genau diese wiederholte Teilproblemstruktur wird später rekursiv modelliert.
Struktogramme: lineare und binäre Suche
Sortieralgorithmen
Iterative Sortieralgorithmen
Sortierstrategien vergleichen: Selection, Insertion und Bubble

Sortieren bedeutet algorithmisch: Eine Folge so umordnen, dass eine definierte Reihenfolge entsteht. Dabei sind Strategie und Kosten verschieden – etwa beim Aufbau eines sortierten Bereichs, beim Suchen eines Minimums oder beim lokalen Vertauschen benachbarter Werte.

Definition: Sortieralgorithmus
Ein Sortieralgorithmus bringt Daten in eine festgelegte Reihenfolge. Für die Laufzeitanalyse sind vor allem Vergleiche, Tauschoperationen und die Anzahl der Durchläufe zentral.
Verfahren Leitidee Strukturmerkmal
Selection Sort Suche jeweils das kleinste Element im unsortierten Teil. Viele Vergleiche, wenige Tauschaktionen.
Insertion Sort Füge jedes neue Element in den bereits sortierten Teil ein. Sortierter Bereich wächst von links nach rechts.
Bubble Sort Tausche benachbarte Elemente bei falscher Reihenfolge. Große Werte „wandern" schrittweise nach rechts.
Struktogramme: iterative Sortierverfahren
Gemeinsames Startarray für alle drei Verfahren: [9, 4, 7, 1, 6, 3]
Selection Sort (Minimum im Restbereich)
  • Schritt 1: Minimum in [9,4,7,1,6,3] ist 1 → Tausch mit Position 0 → [1,4,7,9,6,3]
  • Schritt 2: Minimum in [4,7,9,6,3] ist 3 → Tausch mit Position 1 → [1,3,7,9,6,4]
  • Schritt 3: Minimum in [7,9,6,4] ist 4 → Tausch mit Position 2 → [1,3,4,9,6,7]
Insertion Sort (sortierter Bereich wächst)
  • Start: [9 | 4,7,1,6,3]
  • 4 einfügen → [4,9 | 7,1,6,3]
  • 7 einfügen → [4,7,9 | 1,6,3]
  • 1 einfügen → [1,4,7,9 | 6,3]
  • 6 einfügen → [1,4,6,7,9 | 3]
  • 3 einfügen → [1,3,4,6,7,9 | ]
Bubble Sort (große Werte wandern nach rechts)
  • Pass 1: [9,4,7,1,6,3] → ... → [4,7,1,6,3,9] (9 „blubbert“ nach rechts)
  • Pass 2: [4,7,1,6,3,9] → ... → [4,1,6,3,7,9]
  • Pass 3: [4,1,6,3,7,9] → ... → [1,4,3,6,7,9]
Insertion Sort als Aufbauprozess: unsortiert | sortiert
  • Initial: [9 | 4, 7, 1, 6, 3] → sortierter Bereich enthält genau ein Element.
  • Nach Einfügen von 4: [4, 9 | 7, 1, 6, 3] → 4 wird vor 9 einsortiert.
  • Nach Einfügen von 7: [4, 7, 9 | 1, 6, 3] → Einfügeposition liegt zwischen 4 und 9.
  • Nach Einfügen von 1: [1, 4, 7, 9 | 6, 3] → mehrere Verschiebungen nach rechts.
  • Nach Einfügen von 6: [1, 4, 6, 7, 9 | 3] → sortierter Bereich wächst weiter.
  • Final: [1, 3, 4, 6, 7, 9 | ] → gesamtes Array sortiert.

Kerngedanke: Der sortierte Bereich wächst Schritt für Schritt nach rechts, während der unsortierte Bereich entsprechend schrumpft.

Effizienz
Effizienzgedanke entwickeln
Vergleiche, Verschiebungen und Wachstum systematisch beobachten

Effizienz wird in Q1.2 als fachliche Beobachtung aufgebaut: Wie viele Vergleiche entstehen? Wie viele Verschiebungen oder Tauschoperationen sind nötig? Wie verändert sich das Verhalten bei größeren Eingaben?

Definition: Laufzeit
Laufzeit beschreibt, wie die Zahl der benötigten Verarbeitungsschritte mit der Eingabegröße wächst. In Q1.2 wird sie über Vergleiche, Vertauschungen und Durchläufe analysiert.
Verfahrenspaar Beobachtung Fachliche Folgerung
Lineare vs. binäre Suche Lineare Suche prüft häufig viele Elemente; binäre Suche halbiert den Suchraum. Sortierung als Vorarbeit ermöglicht später deutlich schnellere Suche.
Selection / Insertion / Bubble Alle drei sind iterativ, unterscheiden sich aber in Vergleichs- und Bewegungsmustern. Algorithmuswahl hängt von Datenlage, Ziel und Aufwand ab.
Differenzierte Fallanalyse am Beispiel lineare Suche
Fall Vergleiche (bei Array-Länge n) Bedeutung
Best Case 1 Gesuchtes Element steht direkt am Anfang.
Worst Case n Element steht am Ende oder kommt gar nicht vor.
Average Case n/2 Im Mittel wird etwa bis zur Mitte geprüft.

Die drei Fälle zeigen: Effizienz ist nicht nur „eine Zahl“, sondern hängt von der Eingabesituation ab. Für fundierte Bewertung werden Best-, Worst- und Average-Case gemeinsam betrachtet.

Kausale Effizienzerklärung (Ursache → Wirkung)
  • Lineare Suche braucht bis zu n Schritte: Pro Durchlauf wird nur genau ein neues Element ausgeschlossen.
  • Binäre Suche braucht etwa logarithmische Laufzeit: Pro Schritt fällt ungefähr die Hälfte des aktuellen Intervalls weg.
  • Einfache Sortierverfahren sind oft quadratisch: Ein äußerer Durchlauf über n Positionen kombiniert sich mit inneren Vergleichen/Verschiebungen.

Kausale Lesart: Bei der linearen Suche kann im ungünstigen Fall jedes Element geprüft werden (n Vergleiche). Bei der binären Suche wird der Bereich pro Schritt halbiert (log n Schritte). Einfache iterative Sortierer benötigen häufig verschachtelte Wiederholungen – dadurch entsteht oft eine quadratische Tendenz ().

Mini-Vergleich: Bei n = 8 sind lineare 8 Prüfungen vs. binär ca. 3 Schritte plausibel; bei n = 1000 etwa 1000 vs. ca. 10. Der strategische Unterschied wächst mit der Datenmenge.

Auf erhöhtem Niveau kommt mit effizienten Sortieralgorithmen (z. B. Quicksort im Tool) ein Verfahren hinzu, das im Mittel deutlich besser skaliert als die einfachen n²-Verfahren.

Tool-Anbindung
Tool-Anbindung: beobachtbare Algorithmik
Visualisierung als Analyseinstrument für Schrittlogik und Effizienz

Das Werkzeug Such- und Sortieralgorithmen visualisieren wird in Q1.2 als Beobachtungsraum genutzt:

  • Schrittweise Ablaufbeobachtung von linearer/binärer Suche sowie Insertion/Quicksort.
  • Metriken für Vergleiche und Tausch-/Verschiebeoperationen.
  • Vergleichsfläche mit gespeicherten Kurvenverläufen über mehrere Läufe.

Arbeitsauftrag: Führe pro Verfahren Läufe mit identischer Array-Größe durch, dokumentiere die Vergleichswerte und begründe die beobachteten Unterschiede mit der jeweiligen Strategie.

Ausblick
Ausblick auf Q1.3
Erweiterung des Algorithmusbegriffs durch Rekursion und systematischen Modellvergleich

Aufbauend auf Q1.2 erweitert Q1.3 den Algorithmusbegriff um rekursive Modellierung. Im Fokus stehen dann:

  • Rekursion als Strukturprinzip mit Anker und Rekursionsschritt,
  • iterativ vs. rekursiv als Vergleichsperspektive im selben Problemraum,
  • Teile-und-herrsche und präzisierte Effizienzreflexion.

Konkrete Brücke: Die in Q1.2 analysierte binäre Suche zeigt bereits die zentrale Teilproblemstruktur der Rekursion: „Löse dasselbe Problem auf einem kleineren Intervall“. Q1.3 formalisiert genau dieses Muster mit Basisfall und rekursivem Schritt.