1. 程式人生 > >優先佇列(堆)

優先佇列(堆)

優先佇列和普通佇列的區別在於,優先佇列(堆)總是先優先處理佇列中最小的元素。

優先佇列(堆)允許至少下列兩種操作:Insert(插入),以及DeleteMin(刪除最小者),他的工作是找出、返回和刪除優先佇列中的最小元素。Insert操作類似於Enqueue(入隊),而DeleteMin則是佇列中Dequeue(出隊)在優先佇列中的等價操作。

一些簡單的實現:

1、使用簡單鏈表在表頭以O(1)執行插入操作,並遍歷該連結串列以刪除最小元,這又需要O(N)時間。

2、始終保持排序狀態,這使得插入排序代價高昂(O(N)),而DeleteMin花費低廉(O(1))。

3、使用二叉樹查詢,他對於這兩種操作的平均執行時間都是(log N)