[理工] 資結 調整max heap的演算法問題

看板Grad-ProbAsk作者 (阿倫)時間1年前 (2022/11/23 02:26), 1年前編輯推噓0(0019)
留言19則, 2人參與, 1年前最新討論串1/1
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://www.ptt.cc/bbs/Grad-ProbAsk/M.1669141579.A.39A.html ※ 編輯: allenpong (1.161.94.203 臺灣), 11/23/2022 02:45:01

11/23 17:53, 1年前 , 1F
雖然不知道這是什麼語言
11/23 17:53, 1F

11/23 17:53, 1年前 , 2F
但是tree[j]指的應該是該node
11/23 17:53, 2F

11/23 17:53, 1年前 , 3F
tree[j].key位該node存的key值
11/23 17:53, 3F

11/23 18:01, 1年前 , 4F
是pascal語法,意思是大大說的那樣沒錯,所以說tree[i]
11/23 18:01, 4F

11/23 18:01, 1年前 , 5F
是node的位址嗎 ,可是這樣為甚麼tree[j/2]=tree[j]不
11/23 18:01, 5F

11/23 18:01, 1年前 , 6F
用加.key,不是要把兒子的值給爸爸嗎,沒加是變成兒子
11/23 18:01, 6F

11/23 18:01, 1年前 , 7F
的位址給爸爸?
11/23 18:01, 7F

11/23 18:07, 1年前 , 8F
把裡面的值換掉就可以了
11/23 18:07, 8F

11/23 18:07, 1年前 , 9F
另外j/2不就是i嗎?
11/23 18:07, 9F

11/23 18:12, 1年前 , 10F
是i沒錯,不好意思,把裡面的值換掉具體來說是甚麼意思
11/23 18:12, 10F

11/23 18:12, 1年前 , 11F
他這樣寫就是把node交換,實際上把裡面的值交換就可以
11/23 18:12, 11F

11/23 18:13, 1年前 , 12F
喔 我懂了
11/23 18:13, 12F

11/23 18:14, 1年前 , 13F
太感謝大大了XD
11/23 18:14, 13F

11/23 18:19, 1年前 , 14F
喔 說錯了 j/2不一定是i
11/23 18:19, 14F

11/23 18:19, 1年前 , 15F
因為他沒去更新i的值 更正一下
11/23 18:19, 15F

11/23 18:21, 1年前 , 16F
可以去看CLRS裡面heapify是怎麼做的
11/23 18:21, 16F

11/23 18:21, 1年前 , 17F
比較好懂
11/23 18:21, 17F

11/23 18:27, 1年前 , 18F
應該說第一次j/2是i 做第二次就是j的父點(j會往下鑽
11/23 18:27, 18F

11/23 18:27, 1年前 , 19F
好的 我去研究看看 感恩
11/23 18:27, 19F
文章代碼(AID): #1ZVHHBEQ (Grad-ProbAsk)