建堆的时间复杂度为O(n)
(1)证明如下:
构建堆从叶节点的父节点开始,以树高递减的方向逐层往上,一直到根。
假设堆敏感词有N个元素,则树高H=log2(N),对于从树高为h的节点建堆的复杂度为O(H - h);
从最底层开始,为从各节点建堆的复杂度求和:
S = 1 * 2^(H-1) + 2 * 2^(H-2) + ... + (H-1)
* 2^1 + H * 2^0
= 2^H + 2^(H-1) + ... + 2^1 - H
=
2^(H+1) - 2 - H
将H=log2(N)代入,S = 2N - 2 - log2(N)
建堆时间复杂度:O(n),与堆中的元素个数有关
建堆空间复杂度:O(1),表示所需空间为常量,并且与元素数无关
不稳定的排序算法:(快些选堆~朋友来聊天)快速排序、希尔排序、选择排序、堆排序
堆排序时间复杂度:O(nlogn)