![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
堆与堆优化
oj
Ypuyu
Ypuyu
展开
-
[堆排序+模板] 堆排序
文章目录0. 前言1. 堆排序 0. 前言 堆排序是一个不稳定的排序算法,对数据不敏感,时间复杂度稳定,主要分为两部分:建堆、堆排序。 其中建堆的时间复杂度是 O(n)O(n)O(n) 的,而排序选出一个最大、最小值的过程是 O(logn)O(logn)O(logn) 的,一共需要 n 次操作,故总共的时间复杂度是 O(nlogn)O(nlogn)O(nlogn) 的。 堆主要的两个操作,在此仅使用向下调整 down() 操作即可,至于另一个注意点就是堆排序的建堆时间复杂度计算了,和树的高度密切相关,通过原创 2020-10-22 14:29:03 · 601 阅读 · 0 评论 -
[堆+模板] 模拟堆模板
文章目录0. 前言1. 并查集+最裸版本 0. 前言 该并查集模板支持的操作: 将两个集合合并 询问两个元素是否在一个集合当中 并查集两个优化: 路径压缩:当一路找到根节点,会将这条路径上所有点都直接指向根节点。优化效果十分明显,使并查集接近 O(1)O(1)O(1) 的时间复杂度。 按秩合并:优化效果不明显,一般用不到,该模板并没有包含。 常见问题: 树根判断:p[x] = x 求 x 的集合编号:while(p[x] != x) x = p[x];,如果父节点不为根节点,那么将 x 更新为上级原创 2020-10-22 11:59:39 · 346 阅读 · 0 评论