导语
二叉堆确实是入门级的重要数据结构了,而二项队列也是慢慢要去掌握的一种支持高效合并的优先队列实现。本文稍作比较,望抛砖引玉。
列个表格比较基本操作性能 基本操作 insert(平均) deleteMin/deleteMax merge 二项队列 O(1) O(logN) O(logN) 二叉堆: O(1) O(logN) O(N)不难看出,二项队列merge操作优势明显。
二叉堆插入O(1)的解释如下说明:二叉堆插入也是 O(1) 这点,我其实原本不太敢写,因为网搜确实都写是O(logN),但大家这么想就能理解了(因为我们说的是平均情况): 二叉堆建堆的时间复杂度是O(N),除以逐一插入的N个元素,就平均是O(1)。 准确地说,O(logN)其实是最坏情况。
Merge操作的性能比较对于二项队列而言,它可以弥补二叉堆的在合并操作上的“低效”。