题目:将一个顺序表利用向下调整的方式整理成堆的时间复杂度为
A.O(nlogn)
B.O(logn)
C.O(1)
D.O(n)
解析:建立堆的顺序是bottom-top的。
正确的证明方法应当如下:
A.具有n个元素的平衡二叉树,树高为㏒n,我们设这个变量为h。
B.最下层非叶节点的元素,只需做一次线性运算便可以确定大根,而这一层具有2^(h-2) 个元素,我们假定O(1)=1,那么这一层元素所需时间为 2^(h-2) × 1。
C.由于是bottom-top建立堆,因此在调整上层元素的时候,并不需要同下层所有元素做比较,只需要同其中之一分支作比较,而作比较次数则是树的高度减去当前节点的高度
D.通过以上分析能列出式子1,然后两边同时乘以2,形成错位相减,化简计算得O(n)
具体计算如下