并查集及优化(按个数合并+路径压缩)

2020年9月30日 周三 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】



1. 并查集的优化

实现了并查集,同时进行了两点优化:

  1. 按树的大小进行合并(也可按照树的秩(高度)进行合并,两种方法效率接近)
  2. 路径压缩(迭代法不够极致,递归法压缩的比较极致)

代码是用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	   [email protected]
 *  @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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值