2020年9月30日 周三 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】
1. 并查集的优化
实现了并查集,同时进行了两点优化:
- 按树的大小进行合并(也可按照树的秩(高度)进行合并,两种方法效率接近)
- 路径压缩(迭代法不够极致,递归法压缩的比较极致)
代码是用VS2019实现的,完整工程放在了我的github上,有需要的也可以自取。
github地址:https://github.com/March225/High-frequency-algorithm
2. 并查集代码
2.1 主函数 main.cpp
/**
* @Copyright (C) 2020 March. All rights reserved.
* @license GNU General Public License (GPL)
* @author March
* @email 345916208@qq.com
* @file main.cpp
* @brief 实现并查集(优化:1.按树的大小进行合并;2.路径压缩)
* @version 1.0
* @date 2020-08-25
*/
#include "stdafx.h"
class UnionFind {
private:
int count_; // 连通分量个数
vector<int> parent; // 存储一棵树
vector<int> size; // 记录树的大小(包含此根结点在内的整棵树的结点数)
public:
UnionFind(int n) : count_(n), parent(vector<int>(n))<