C语言算法1.3:连通问题高级改进版(性能提升1000倍)【视频解析】

注:这一篇是上一篇《C语言算法1.2:连通问题改进版【视频解析】》的改进版,推荐先阅读上一篇再阅读本篇。

!!!喜欢看视频的朋友请点击这里!!!

一、来源

来自《算法:C语言实现(第1-4部分)第3版》书的程序1.3。


二、两个版本的区别

两个版本都是使用数组来实现的,假设有一个一维数组a,大小为10,a[0]到a[9]中存的值分别为0~9,即每个元素的值都不一样。

1.2版本 1.3版本
实现逻辑 使用树结构,合并时,把左边的树合并到右边的树下。 使用树结构,合并时,把深度较小的树合并到深度较大的树下。
优缺点 查找慢、合并快 查找快、合并也快

三、1.3版本的示意图

在这里插入图片描述
在之前的1.2版本中,总是把左侧的树合并到右侧的树下,导致树的深度极度拉长,往上找根节点时要查询的次数非常多。

而在现在的1.3版本中,总是把小的树合并到大的树下,做到了树深度的平衡,因此往上找根节点时要查询的次数少很多。

四、性能测试结果

节点数量 1.2版本耗时(毫秒) 1.3版本耗时(毫秒) 耗时比
1万 0 0 忽略
10万 3199 2 1599
100万 50522 25 2020
  1. 性能提升达到1000倍以上。
  2. 节点数量越多,性能提升越高。

五、源码

源文件比较多,就不在文章里贴了,链接在这里:githubgitee


六、过程示意图

在这里插入图片描述


全文完

猜你喜欢

转载自blog.csdn.net/h837087787/article/details/122180163