作者allenpong (阿伦)
看板Grad-ProbAsk
标题[理工] 资结 调整max heap的演算法问题
时间Wed Nov 23 02:26:17 2022
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奉上,想了一个
晚上= =
----
Sent from
BePTT on my iPhone 11 Pro
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.161.94.203 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1669141579.A.39A.html
※ 编辑: allenpong (1.161.94.203 台湾), 11/23/2022 02:45:01
1F:→ mathtsai: 虽然不知道这是什麽语言 11/23 17:53
2F:→ mathtsai: 但是tree[j]指的应该是该node 11/23 17:53
3F:→ mathtsai: tree[j].key位该node存的key值 11/23 17:53
4F:→ allenpong: 是pascal语法,意思是大大说的那样没错,所以说tree[i] 11/23 18:01
5F:→ allenpong: 是node的位址吗 ,可是这样为甚麽tree[j/2]=tree[j]不 11/23 18:01
6F:→ allenpong: 用加.key,不是要把儿子的值给爸爸吗,没加是变成儿子 11/23 18:01
7F:→ allenpong: 的位址给爸爸? 11/23 18:01
8F:→ mathtsai: 把里面的值换掉就可以了 11/23 18:07
9F:→ mathtsai: 另外j/2不就是i吗? 11/23 18:07
10F:→ allenpong: 是i没错,不好意思,把里面的值换掉具体来说是甚麽意思 11/23 18:12
11F:→ mathtsai: 他这样写就是把node交换,实际上把里面的值交换就可以 11/23 18:12
12F:→ allenpong: 喔 我懂了 11/23 18:13
13F:→ allenpong: 太感谢大大了XD 11/23 18:14
14F:→ mathtsai: 喔 说错了 j/2不一定是i 11/23 18:19
15F:→ mathtsai: 因为他没去更新i的值 更正一下 11/23 18:19
16F:→ mathtsai: 可以去看CLRS里面heapify是怎麽做的 11/23 18:21
17F:→ mathtsai: 比较好懂 11/23 18:21
18F:→ allenpong: 应该说第一次j/2是i 做第二次就是j的父点(j会往下钻 11/23 18:27
19F:→ allenpong: 好的 我去研究看看 感恩 11/23 18:27
20F:推 password5353: tree[i]应该是指index tree[i].key是index中的值 11/28 16:12
21F:→ password5353: 我的理解是这样 11/28 16:12