Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Heapsort-Algorithmus

Ähnliche Präsentationen


Präsentation zum Thema: "Heapsort-Algorithmus"—  Präsentation transkript:

1 Heapsort-Algorithmus
Wahlkurs Informatik (C) MPohlig 2006

2 Die Idee des Heapsort-Algorithmus
Wann ist ein binärer (Teil)baum heap? Rekursive Definition Wir nennen einen Baum im Knoten i dann heap, wenn die Söhne des Knotens nicht größere Werte haben als i und jeder Teilbaum ab dem Knoten i abwärts selbst wieder heap ist. Ein leerer Teilbaum ist a priori heap. Insbesondere erfüllt ein ganzer Baum die heap-Bedingung, wenn er in der Wurzel heap ist. Wahlkurs Informatik (C) MPohlig 2006

3 Die Idee des Heapsort-Algorithmus
Wahlkurs Informatik (C) MPohlig 2006

4 Die Idee des Heapsort-Algorithmus
Wahlkurs Informatik (C) MPohlig 2006

5 Die Idee des Heapsort-Algorithmus
Wahlkurs Informatik (C) MPohlig 2006

6 Die Idee des Heapsort-Algorithmus
Wahlkurs Informatik (C) MPohlig 2006

7 Die Implementierung des Heapsort-Algorithmus
public static void heapSort(int[] liste) {    macheHeap(liste);    for (int i = liste.length-1; i > 0; i--) {      tausche(liste, 0, i);      macheHeapFuerKnoten(liste, 0, i-1);    }  } private static void macheHeap(int[] liste) {    for (int i = (liste.length/2); i >= 0; i--) {      macheHeapFuerKnoten(liste, i, liste.length-1);    }  } Wahlkurs Informatik (C) MPohlig 2006

8 Die Implementierung des Heapsort-Algorithmus
private static void macheHeapFuerKnoten(int[] liste, int dieserKnoten, int heapGroesse) {    int linkerSohn = 2 * dieserKnoten + 1;    int rechterSohn = linkerSohn + 1;    int sohn;    if (linkerSohn <= heapGroesse && rechterSohn > heapGroesse) {       if (liste[linkerSohn] < liste[dieserKnoten])               tausche(liste, linkerSohn, dieserKnoten);    }    else {                                              if (rechterSohn <= heapGroesse) {        sohn = liste[linkerSohn] < liste[rechterSohn] ? linkerSohn : rechterSohn;        if (liste[sohn] < liste[dieserKnoten]) {            tausche(liste, dieserKnoten, sohn);          macheHeapFuerKnoten(liste, sohn, heapGroesse);        }      }    }  } Wahlkurs Informatik (C) MPohlig 2006


Herunterladen ppt "Heapsort-Algorithmus"

Ähnliche Präsentationen


Google-Anzeigen