【发布时间】:2020-11-13 22:00:07
【问题描述】:
我知道有很多关于这个主题的问题得到了解答。但我不明白他们在说什么。
具体来说,我的问题是为什么最坏的情况发生在底层是exactly half full 而为什么不是full?
我浏览过这个问题:
Worst case in Max-Heapify - How do you get 2n/3?
worst case in MAX-HEAPIFY: “the worst case occurs when the bottom level of the tree is exactly half full”
但我的问题是,当树中的节点处于最大值时,我们可能会遇到最坏的情况,为什么我们使用术语“半满”?
为了支持我的观点,我附上了一张图片。现在A 的高度是3,B 的高度也是3。但是我们调用heapify 的次数会增加,因为现在A 将为n/2 调用heapify,即11/2 ~ 5,在B 中我们调用在主循环内为15/2 ~ 7 堆化。这应该是最坏的情况吗?
我确信我的直觉有误,但不知道在哪里。
【问题讨论】:
标签: algorithm data-structures heapsort