艰难的数据结构的复习(一)

前言

本以为花了近两周的时间把课本看了一遍,做题应该没什么大问题了,结果,不考代码的题自己都做不对。不想让自己摸索的这段时间白白浪费,所以从今天开始,记录自己对数据结构的一些最初的误解以及经过摸索后的新认识,如果有错误的,希望大佬指正。

最小生成树的prim算法

算法如图其中堆与图在其对应类中实现
算法如图
最初以为每次找到不在生成树集合中的点,然后再将其含有的边入最小堆,第二个循环里将最小值拿出来。以为堆中之前的边都没有了,只有当前点所对应的边,这是最大的误解之处
其实,为什么当初产生了这个想法,是因为看了课本上的这个题目。
在这里插入图片描述
真的就刚好印证了我的想法。(哭(´;︵;`))不过这其实是一种巧合罢了。

其实仔细思考,如果真按照我上述的想法来看,那么第二个便不需要while循环了,直接拿出最小边,都不需要判断。那这样的话,是没办法每次取出图中最小边的。

事实上,堆虽然在更新,但之前进入堆的边都还在,有些已经被用过进行了标记,所以第二个循环中便是为了判断是否取出的最小边所对应的邻接点已经进入了集合中。算法复杂度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值