4-10 和堆相关的其他问题

来源:互联网 发布:文爱都用什么软件 编辑:程序博客网 时间:2024/06/13 20:08

(1)使用堆实现优先队列

动态选择优先级最高的任务执行

(2)从 100万个元素中选择前 100

每次新放入一个元素之后,把最小堆中的第 1 个元素请出去。

(3)多路归并排序(这个思路听起来好像很有意思)

如果一个数组有 n 个元素,对这个数组的元素进行 n 路归并排序,此时归并排序就退化成了堆排序。

(4)d 叉堆

一般的任务使用二叉堆是可以实现的。

我们的例子实现的均是最大堆、最大索引堆。

可以试着实现以下最小堆、最小索引堆。

堆的实现细节优化

1、shift up 和 shift down 中使用赋值操作替换 swap 操作

2、表示堆的数组从 0 开始索引

3、没有 capacity 的限制,动态地调整堆中数组的大小。

算法分析。

最大最小队列。

二项堆

斐波那契堆

原创粉丝点击