Loading docs/ds/heap.md +5 −6 Original line number Diff line number Diff line # 堆简介 堆是一种数据结构,维护一个数的集合(或者,一个支持比较的元素的集合)。 堆是一棵树,其每个节点都有一个键值,且每个节点的键值都大于等于/小于等于其父亲的键值。 主要功能有:insert, getmin, deletemin, decreasekey。 每个节点的键值都大于等于其父亲键值的堆叫做小根堆,否则叫做大根堆。STL 中的 `priority_queue` 其实就是一个大根堆。 注意:简单起见,我们这里讨论的都是维护最小值的堆,也叫小根堆,与之相对的叫做大根堆。 (小根)堆主要支持的操作有:插入一个数、查询最小值、删除最小值、合并两个堆、减小一个元素的值。 一些功能强大的堆还能(高效地)支持 merge 等操作。 一些功能强大的堆(可并堆)还能(高效地)支持 merge 等操作。 一些功能更强大的堆还支持可持久化,也就是对任意历史版本进行查询或者操作,产生新的版本。 Loading @@ -21,6 +21,5 @@ | 减小一个元素的值 (decrease-key) | $o(\log n) (下界\Omega(\log \log n) ,\\\\上界 O(2^{2\sqrt{\log \log n}}) )$ | $O(\log n)$ | $O(logn)$ | $O(\log n)$ | $O(1)$ | | 是否支持可持久化 | $\times$ | $\checkmark$ | $\checkmark$ | | $\times$ | 一个有趣的事实是,这些堆都是用基于树的数据结构实现的。 习惯上,不加限定提到 “堆” 时往往都指二叉堆。 在 OI 中,最常用的堆是二叉堆,习惯上不加限定提到“堆”时往往也指二叉堆。 Loading
docs/ds/heap.md +5 −6 Original line number Diff line number Diff line # 堆简介 堆是一种数据结构,维护一个数的集合(或者,一个支持比较的元素的集合)。 堆是一棵树,其每个节点都有一个键值,且每个节点的键值都大于等于/小于等于其父亲的键值。 主要功能有:insert, getmin, deletemin, decreasekey。 每个节点的键值都大于等于其父亲键值的堆叫做小根堆,否则叫做大根堆。STL 中的 `priority_queue` 其实就是一个大根堆。 注意:简单起见,我们这里讨论的都是维护最小值的堆,也叫小根堆,与之相对的叫做大根堆。 (小根)堆主要支持的操作有:插入一个数、查询最小值、删除最小值、合并两个堆、减小一个元素的值。 一些功能强大的堆还能(高效地)支持 merge 等操作。 一些功能强大的堆(可并堆)还能(高效地)支持 merge 等操作。 一些功能更强大的堆还支持可持久化,也就是对任意历史版本进行查询或者操作,产生新的版本。 Loading @@ -21,6 +21,5 @@ | 减小一个元素的值 (decrease-key) | $o(\log n) (下界\Omega(\log \log n) ,\\\\上界 O(2^{2\sqrt{\log \log n}}) )$ | $O(\log n)$ | $O(logn)$ | $O(\log n)$ | $O(1)$ | | 是否支持可持久化 | $\times$ | $\checkmark$ | $\checkmark$ | | $\times$ | 一个有趣的事实是,这些堆都是用基于树的数据结构实现的。 习惯上,不加限定提到 “堆” 时往往都指二叉堆。 在 OI 中,最常用的堆是二叉堆,习惯上不加限定提到“堆”时往往也指二叉堆。