Vo väčšine programovacích jazykov haldu nájdeme v štandardných knižniciach.
Netreba teda programovať vlastnú, stačí použiť existujúcu. Napr. v C++ máme dátovú štruktúru priority_queue
a v Pythone máme funkcie heappush
a heappop
v module heapq
.
Ukážme si teraz ako s týmito knižničnými haldami pracovať.
V Pythone existujú dve knižnice na prácu s haldou:
heapq
(import heapq
)PriorityQueue
(from queue import PriorityQueue
)heapq
import heapq
halda = [8, 6, 1, 3, 4, 5]
heapq.heapify(halda)
# halda = [1, 3, 5, 6, 4, 8]
heapq.heappush(halda, 9)
heapq.heappush(halda, 15)
heapq.heappush(halda, 0)
while len(halda)!=0:
heapq.heappop(halda)
PriorityQueue
from queue import PriorityQueue
q = PriorityQueue()
q.put(4)
q.put(2)
q.put(5)
q.put(1)
q.put(3)
while not q.empty():
next_item = q.get()
print(next_item)
Tu je odpoveď pomerne jednoduchá: heapq
je rýchlejšia (keďže PriorityQueue
je v skutočnosti implementovaná pomocou heapq
), a teda väčšinou je lepšie používať heapq
.
#include <iostream>
#include <queue>
using namespace std;
int main()
{
priority_queue<int> pq;
pq.push(8);
pq.push(10);
pq.push(2);
cout << "size: " << pq.size() << endl;
cout << "top: " << pq.top() << endl;
while (!pq.empty()) {
cout << "pop() : ";
pq.pop();
}
}