当前位置: 首页 > news >正文

并查集及其优化

1.并查集

#define SIZE 100
int UFSets[SIZE];void Initial(int S[]) {for (int i = 0; i < SIZE; i++)S[i]=-1;
}int Find(int S[], int x) {//查while(S[x] >= 0)x = S[x];return x;
}void Union(int S[], int Root1, int Root2) {//并if(Root1 == Root2)return;S[Root2] = Root1;
}

Find操作最坏时间复杂度:O(n)
Union操作最坏时间复杂度:O(1)
优化Union操作,小树并入大树,减少Find操作的复杂度。

2.优化

void Union(int S[], int Root1, int Root2) {if(Root1 == Root2)return;if(Root2 > Root1) {S[Root1] += S[Root2];S[Root2] = Root1;}else {S[Root2] += S[Root1];S[Root1] = Root2;}
}

Find操作最坏时间复杂度:O(logn)

2.进一步优化:压缩路径

优化Find操作,使树更矮。

int Find(int S[], int x) {int root = x;while(S[x] >= 0)root = S[root];while(x != root) {int t = S[x];S[x] = root;x = t;}return root;
}

Find操作最坏时间复杂度:O(α(n))

http://www.lryc.cn/news/179438.html

相关文章:

  • LeetCode 周赛上分之旅 #48 一道简单的树上动态规划问题
  • mysql报错:Column Count Doesn‘t Match Value Count at Row 1
  • 安卓 kuaishou 设备did和egid 学习分析
  • 基于Vue+ELement实现增删改查案例与表单验证(附源码)
  • webpack:使用externals配置来排除打包后的某个依赖插件IgnorePlugin的使用
  • 2023年中国工业脱水机行业供需分析:随着自动化和智能化技术的快速发展,销量同比增长4.9%[图]
  • [论文笔记]MacBERT
  • AI发展目前最大挑战是什么?
  • 自然语言处理NLP:LTP、SnowNLP、HanLP 常用NLP工具和库对比
  • 百度交易中台之内容分润结算系统架构浅析
  • 【索引】常见的索引、B+树结构、什么时候需要使用索引、优化索引方法、索引主要的数据结构、聚簇索引、二级索引、创建合适的索引等重点知识汇总
  • Egg 封装接口返回信息
  • Android AMS——创建APP进程(五)
  • 凉鞋的 Unity 笔记 102. 场景层次 与 GameObject 的增删改查
  • 信息安全:网络安全审计技术原理与应用.
  • 嵌入式Linux应用开发-第十三章APP怎么读取按键值
  • Web 中间件怎么玩?
  • HMTL知识点系列(4)
  • CFS内网穿透靶场实战
  • 【RabbitMQ实战】07 3分钟部署一个RabbitMQ集群
  • PS 切片工具 选择切片 切片存储
  • Git版本控制系统
  • Element UI搭建首页导航和左侧菜单以及Mock.js和(组件通信)总线的运用
  • What is an HTTP Flood DDoS attack?
  • 第 114 场 LeetCode 双周赛题解
  • [Java框架] Java常用爬虫框架推荐
  • Kafka:安装与简单使用
  • 029-从零搭建微服务-消息队列(一)
  • Python2020年06月Python二级 -- 编程题解析
  • 差分放大器的精髓:放大差模信号 抑制共模信号