Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:q1:algorithmen-rekursion:l3-lineare-sortieralg-teil2

Einfache Sortieralgorithmen II

Sortieralgorithmen

In der letzten Sitzung haben wir die beiden Sortieralgorithmen InsertionSort und SelectionSort kennen gelernt.

Diese schauen wir uns heute noch einmal genauer an, diesmal mit dem Fokus auf die (manuelle) Durchführung beider Algorithmen.

Pseudo-Code SelectionSort
Pseudo-Code InsertionSort
Unterschied zwischen beiden Algorithmen

Der Unterschied zwischen beiden Algorithmen besteht darin, welches Element vom unsortierten in den sortierten Bereich übertragen wird und wie es in den sortierten Bereich eingeordnet wird.

  • Auswahl:
    • InsertionSort wählt einfach immer das erste Element (Einfach)
    • SelectionSort wählt immer das kleinste Element aus dem unsortierten Bereich aus (Komplex)
  • Einordnung:
    • SelectionSort fügt das zu übertragende Element immer ans Ende des sortierten Bereichs an (Einfach)
    • InsertionSort sortiert das zu übertragende Element an die passende Stelle ein (Komplex)

Dieses Vorgehen schauen wir uns nun an einem Beispiel an. Beide Algorithmen sollen die Liste [ 25, 17, 32, 56, 25, 19, 8, 66, 29, 6, 20, 29 ] sortieren. Der Marker ^ markiert das vom Algorithmus ausgewählte Element. Der Marker # markiert die neue Position des vom Algorithmus ausgewählten Elements.

Durchführung SelectionSort
[]     [ 25, 17, 32, 56, 25, 19, 8, 66, 29, 6, 20, 29 ]
                                            ^
[ 6 ]     [ 25, 17, 32, 56, 25, 19, 8, 66, 29, 20, 29 ]
  #                                 ^
[ 6, 8 ]     [ 25, 17, 32, 56, 25, 19, 66, 29, 20, 29 ]
     #             ^
[ 6, 8, 17 ]     [ 25, 32, 56, 25, 19, 66, 29, 20, 29 ]
        #                          ^
[ 6, 8, 17, 19 ]     [ 25, 32, 56, 25, 66, 29, 20, 29 ]
            #
Durchführung InsertionSort
[]     [ 25, 17, 32, 56, 25, 19, 8, 66, 29, 6, 20, 29 ]
         ^
[ 25 ]     [ 17, 32, 56, 25, 19, 8, 66, 29, 6, 20, 29 ]
  #          ^
[ 17, 25 ]     [ 32, 56, 25, 19, 8, 66, 29, 6, 20, 29 ]
  #              ^
[ 17, 25, 32 ]     [ 56, 25, 19, 8, 66, 29, 6, 20, 29 ]
          #          ^
[ 17, 25, 32, 56 ]     [ 25, 19, 8, 66, 29, 6, 20, 29 ]
              #
Aufgabe 1

a) Führe die beiden Algorithmen in den Beispielen oben bis zum Ende aus!

b) Sortiere die Liste [ 81, 98, 50, 98, 23, 30, 6, 11, 42, 32, 76, 62 ] mit SelectionSort.

c) Sortiere die Liste [ 1, 88, 61, 18, 90, 83, 89, 21, 7, 72, 64, 6 ] mit InsertionSort.

Grundproblem bei beiden Algorithmen

Uns Menschen fällt es sehr leicht, das kleinste Element auszuwählen (SelectionSort) bzw. ein beliebiges Element in eine bereits sortierte Liste einzuordnen (InsertionSort). Der Computer benötigt hierfür allerdings auch einen Algorithmus.

SelectionSort - kleinstes Element auswählen
InsertionSort - Element einsortieren
Beide Algorithmen zusammen

Natürlich sollen unsere beiden Sortieralgorithmen beides in einem (also Sortieren und das kleinste Element auswählen bzw. Sortieren und das erste Element passend einsortieren) können. Somit muss man die beiden Algorithmen jeweils ineinander verschachteln und ggf. Variablennamen anpassen.

SelectionSort - Sortieren und Auswählen zusammen
InsertionSort - Sortieren und Einsortieren
Neuer Algorithmus BubbleSort

Somit ergeben sich in beiden Fällen Sortieralgorithmen, bei denen zwei Schleifen ineinander verschachtelt sind. Es gibt allerdings einen weiteren berühmten Sortieralgorithmus, der ähnlich vorgeht: BubbleSort.

Aufgabe 2

Lest den Artikel BubbleSort auf inf-schule.de. Notiert eure Antworten zu den Fragen im Artikel im Gruppendokument.

  • Bearbeitet nur Aufgabe 1 aus dem Artikel! (Antworten → Gruppendokument!)
  • Lest anschließend das Fachkonzept: BubbleSort und probiert den Algorithmus in Processing aus.
Aufgabe 3

a) Das Beispiel unten zeigt den ersten Durchlauf von BubbleSort. Die Marker ^ und * markieren die beiden vom Algorithmus ausgewählten Elemente, wobei ^ nicht vertauscht, * aber schon. Der Marker # markiert das erste Element des bereits sortierten Bereichs. Führe den Algorithmus bis zum Ende aus!

Erster Durchlauf
[ 92, 95, 84, 25, 70, 45, 27 ]
  ^   ^
[ 92, 95, 84, 25, 70, 45, 27 ]
      *   *
[ 92, 84, 95, 25, 70, 45, 27 ]
          *   *
[ 92, 84, 25, 95, 70, 45, 27 ]
              *   *
[ 92, 84, 25, 70, 95, 45, 27 ]
                  *   *
[ 92, 84, 25, 70, 45, 95, 27 ]
                      *   *
[ 92, 84, 25, 70, 45, 27, 95 ]
                          #

b) Sortiere [ 78, 32, 94, 12, 32, 95, 34 ] mit BubbleSort!

info/sek-ii/q1/algorithmen-rekursion/l3-lineare-sortieralg-teil2.txt · Zuletzt geändert: 2023-10-08 20:25 von christian.weber