原地堆排序只能用最大堆的思想吗?可以使用最小堆?

来源:4-6 优化的堆排序(Heap Sort)

weixin_慕妹5444478

2019-10-29

写回答

1回答

liuyubobobo

2019-10-30

不可以,或者更准确的说,会极度地不方便。


因为我们使用数组表示堆的时候,堆顶索引是 0。后续关于一个节点的相邻节点是 2*i + 1 和 2*i + 2,是基于这一假设的。否则,我们没有统一的找到一个节点的左右孩子节点的方式。


当使用最大堆的时候,每次将最大元素放到最后,不会破坏在前面的数组中,将它看做一个堆,堆顶元素依然索引为 0 的性质。


你可以尝试使用最小堆的思想实现一下试试看?看看会遇到什么问题?


继续加油!:)

1
1
weixin_慕妹5444478
非常感谢
2019-10-30
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程