Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung | |||
| gf_informatik:suchen_und_sortieren:sortieren [2026-05-02 14:07] – [Aufgabe C4: Selection Sort anwenden] hof | gf_informatik:suchen_und_sortieren:sortieren [2026-05-02 14:12] (aktuell) – [C7 (Herausforderung): Quicksort] hof | ||
|---|---|---|---|
| Zeile 189: | Zeile 189: | ||
| Es wird jedes Element mit jedem anderen verglichen. Intuitiv scheint es möglich, mit weniger Vergleichen auszukommen. Wenn wir wissen, dass `x > y` und `y > z` ist, so müssten wir eigentlich `x` nicht mehr mit `z` vergleichen. Aber wieviele Vergleiche sind mindestens notwendig? Können wir einen **Divide & Conquer** Ansatz wie bei der Binärsuche verwenden? | Es wird jedes Element mit jedem anderen verglichen. Intuitiv scheint es möglich, mit weniger Vergleichen auszukommen. Wenn wir wissen, dass `x > y` und `y > z` ist, so müssten wir eigentlich `x` nicht mehr mit `z` vergleichen. Aber wieviele Vergleiche sind mindestens notwendig? Können wir einen **Divide & Conquer** Ansatz wie bei der Binärsuche verwenden? | ||
| - | |||
| #### C7 (Herausforderung): | #### C7 (Herausforderung): | ||
| Zeile 222: | Zeile 221: | ||
| ++++ | ++++ | ||
| - | <nodisp 1> | + | <bottom-exercise id=" |
| - | ++++Lösung| | + | < |
| - | <code python quicksort.py> | + | def teile(l, links, rechts): |
| + | """ | ||
| + | Divide-Step von Quicksort: Teilt die angegebene Liste in zwei Teile und gibt | ||
| + | den Index des Pivot-Elements zurück. | ||
| + | Alle Elemente vor dem Pivot-Element sind <= dem Pivot, alle Elemente nachher sind | ||
| + | grösser als der Pivot. | ||
| + | """ | ||
| + | |||
| + | def quick_sort(l, | ||
| + | """ | ||
| + | </ | ||
| + | < | ||
| + | assert quick_sort([3, | ||
| + | assert quick_sort([35, | ||
| + | </ | ||
| + | < | ||
| def teile(l, links, rechts): | def teile(l, links, rechts): | ||
| """ | """ | ||
| Zeile 274: | Zeile 288: | ||
| l = [35, 71, 93, 88, 1, 83, 83, 56, 10, 96] | l = [35, 71, 93, 88, 1, 83, 83, 56, 10, 96] | ||
| print(quick_sort(l)) | print(quick_sort(l)) | ||
| - | </code> | + | </template> |
| - | ++++ | + | </bottom-exercise> |
| - | </nodisp> | + | |