分析堆操作的复杂度

由于堆的实现方式各不相同,因此复杂度也各不相同。堆的一个关键事实是提取操作,从堆中提取最大值或最小值总是需要 \$O(1)\$ 时间。由于我们关注的是二进制堆的实现,因此我们将对二进制堆操作进行分析:

操作 复杂度平均值 复杂度最坏值

Search

\$O(n)\$

\$O(n)\$

Insert

\$O(1)\$

\$O(logn)\$

Delete

\$O(logn)\$

\$O(logn)\$

Extract

\$O(1)\$

\$O(1)\$

Space

\$O(n)\$

\$O(n)\$

由于堆没有完全排序,搜索操作所需的时间会比普通二叉搜索树长。