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

本文介绍了《算法:C语言实现》书中程序1.3关于连通问题的改进版,对比1.2版本,1.3版本在合并树时选择将较小的树合并到大的树下,以保持树深度平衡,显著提高了查找效率。性能测试显示,节点数量越多,1.3版本相对于1.2版本的性能提升越明显,可达1000倍以上。源码已上传至github和gitee,供读者参考学习。
摘要由CSDN通过智能技术生成

注:这一篇是上一篇《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万00忽略
10万319921599
100万50522252020
  1. 性能提升达到1000倍以上。
  2. 节点数量越多,性能提升越高。

五、源码

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


六、过程示意图

在这里插入图片描述


全文完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值