class PriorityQueue: A # 儲存佇列元素的陣列 heapSize # 實際上有儲存資料的堆積大小 insert(x): A[heapSize++] ← x # 插入元素 upHeap(heapSize-1) # 進行 Up Heap top(): return A[0] extract(): val ← A[0] A[0] ← A[heapSize-1] heapSize-- downHeap(0) # 進行 Down Heap return val upHeap(i): # 以插入方式實作 val ← A[i] while True: if i ≤ 0: break if A[parent(i)] ≥ val: break A[i] ← A[parent(i)] i ← parent(i) A[i] ← val downHeap(i): # 以插入方式實作 largest ← i val = A[i] while True: if left(i) < heapSize and right(i) < heapSize: if A[left(i)] > A[right(i)] ): largest ← left(i) else: largest ← right(i) else if left(i) < heapSize: largest ← left(i) else if right(i) < heapSize: largest ← right(i) else: largest ← NIL if largest = NIL : break if A[largest] ≤ val: break A[i] ← A[largest] i ← largest A[i] ← val