[理工] 资结 调整max heap的算法问题

楼主: allenpong (阿伦)   2022-11-23 02:26:17
https://i.imgur.com/VzeIzuP.jpg
https://i.imgur.com/cgkUI51.jpg
如图,为什么要加一个k=tree[i].key
tree[i]本身不就是节点值了吗
而且后面tree[j/2]=tree[j]又没加key了
整个超怪,而且我看板上之前的讲义都没有这个.key
所以其实可以不用加对吧?
跪求大大回复,500p奉上,想了一个
晚上= =
作者: mathtsai (mathtsai)   2022-11-23 17:53:00
虽然不知道这是什么语言但是tree[j]指的应该是该nodetree[j].key位该node存的key值
楼主: allenpong (阿伦)   2022-11-23 18:01:00
是pascal语法,意思是大大说的那样没错,所以说tree[i]是node的位址吗 ,可是这样为什么tree[j/2]=tree[j]不用加.key,不是要把儿子的值给爸爸吗,没加是变成儿子的位址给爸爸?
作者: mathtsai (mathtsai)   2022-11-23 18:07:00
把里面的值换掉就可以了另外j/2不就是i吗?
楼主: allenpong (阿伦)   2022-11-23 18:12:00
是i没错,不好意思,把里面的值换掉具体来说是什么意思
作者: mathtsai (mathtsai)   2022-11-23 18:12:00
他这样写就是把node交换,实际上把里面的值交换就可以
楼主: allenpong (阿伦)   2022-11-23 18:13:00
喔 我懂了太感谢大大了XD
作者: mathtsai (mathtsai)   2022-11-23 18:19:00
喔 说错了 j/2不一定是i因为他没去更新i的值 更正一下可以去看CLRS里面heapify是怎么做的比较好懂
楼主: allenpong (阿伦)   2022-11-23 18:27:00
应该说第一次j/2是i 做第二次就是j的父点(j会往下钻好的 我去研究看看 感恩
作者: password5353 (阿宅)   2022-11-28 16:12:00
tree[i]应该是指index tree[i].key是index中的值我的理解是这样

Links booklink

Contact Us: admin [ a t ] ucptt.com