Heap

module
v0.0.0-...-fd1d963 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 22, 2024 License: Apache-2.0

README

Heap

Ein Heap (englisch wörtlich: Haufen oder Halde) in der Informatik ist eine zumeist auf Bäumen basierende abstrakte Datenstruktur. In einem Heap können Objekte oder Elemente abgelegt und aus diesem wieder entnommen werden. Sie dienen damit der Speicherung von Mengen. Den Elementen ist dabei ein Schlüssel zugeordnet, der die Priorität der Elemente festlegt. Häufig werden auch die Elemente selbst als Schlüssel verwendet.

Über die Menge der Schlüssel muss daher eine totale Ordnung festgelegt sein, über welche die Reihenfolge der eingefügten Elemente festgelegt wird. Beispielsweise könnte die Menge der ganzen Zahlen zusammen mit dem Vergleichsoperator < als Schlüsselmenge fungieren.

Der Begriff Heap wird häufig als bedeutungsgleich zu einem partiell geordneten Baum verstanden. Gelegentlich versteht man einschränkend nur eine besondere Implementierungsform eines partiell geordneten Baums, nämlich die Einbettung in ein Feld (Array), als Heap.

Anwendungsbeispiele

Verwendung finden Heaps vor allem dort, wo es darauf ankommt, schnell ein Element mit höchster Priorität aus dem Heap zu entnehmen (HIFO-Prinzip), beispielsweise bei Vorrangwarteschlangen.

Einige der wichtigsten Eigenschaften, die Heaps nützlich machen, sind:

  • Wir können den maximalen oder minimalen Wert einer gegebenen Menge von "n" Werten in O(1) Zeit finden. Bei Verwendung einer auf einem Array basierenden Liste würde dies normalerweise O(n) Zeit in Anspruch nehmen.
  • Das Hinzufügen und Entfernen von Werten nimmt O(log(n)) Zeit in Anspruch, wobei die Max- oder Min-Heap-Eigenschaft erhalten bleibt. Dies wird beim Sortieren einer Liste von Elementen mittels Heap-Sortierung verwendet, bei der jedes Element einzeln in einen Heap eingefügt wird.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL