[理工] 104台大 資料結構
如圖,想請教第一題
為何在Vector時,link list的insert跟delete都是O(1)
但在下方list L時,singly link list的Remove卻要O(n)呢?
兩者間差異何在、還有,第一題link list在做Insert跟Delete時為什麼不需要先sort?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.165.121
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1484453986.A.513.html
→
01/15 12:36, , 1F
01/15 12:36, 1F
→
01/15 12:36, , 2F
01/15 12:36, 2F
→
01/15 12:39, , 3F
01/15 12:39, 3F
→
01/15 12:39, , 4F
01/15 12:39, 4F
嗯嗯我懂你的意思!但是為什麼在第一個小題中卻是O(1)呢
※ 編輯: ssssIssss (140.112.25.105), 01/15/2017 12:43:07
→
01/15 12:44, , 5F
01/15 12:44, 5F
→
01/15 12:44, , 6F
01/15 12:44, 6F
→
01/15 12:47, , 7F
01/15 12:47, 7F
所以我的內心就一直很掙扎..若是有編號那為什麼第一個還要花O(n)去Access..Orz
※ 編輯: ssssIssss (140.112.25.105), 01/15/2017 12:48:54
→
01/15 12:48, , 8F
01/15 12:48, 8F
→
01/15 12:48, , 9F
01/15 12:48, 9F
若有sort感覺就會提起(像是這份考古的第5題)
※ 編輯: ssssIssss (140.112.25.105), 01/15/2017 12:50:40
→
01/15 12:51, , 10F
01/15 12:51, 10F
→
01/15 12:53, , 11F
01/15 12:53, 11F
→
01/15 12:53, , 12F
01/15 12:53, 12F
→
01/15 12:53, , 13F
01/15 12:53, 13F
可以這樣理解嗎:
Access就是link一個一個index下去search到所需的index,所以要花O(n)
而Insert跟Delete只需著重在動作本身,而Vector有提供Index,所以不需要再花O(n)去
尋找前一個node
※ 編輯: ssssIssss (140.112.25.105), 01/15/2017 13:01:06
→
01/15 13:00, , 14F
01/15 13:00, 14F
→
01/15 13:00, , 15F
01/15 13:00, 15F
→
01/15 13:03, , 16F
01/15 13:03, 16F
→
01/15 13:03, , 17F
01/15 13:03, 17F
→
01/15 13:03, , 18F
01/15 13:03, 18F
→
01/15 13:04, , 19F
01/15 13:04, 19F
→
01/15 13:08, , 20F
01/15 13:08, 20F
→
01/15 13:08, , 21F
01/15 13:08, 21F
不太懂k大的補充,所以delete跟remove不同嗎@@
是指說純delete是O(1)而純remove要先search所以是O(n)?
※ 編輯: ssssIssss (140.112.25.105), 01/15/2017 13:16:43
→
01/15 13:20, , 22F
01/15 13:20, 22F
→
01/15 13:20, , 23F
01/15 13:20, 23F
→
01/15 13:21, , 24F
01/15 13:21, 24F
→
01/15 13:21, , 25F
01/15 13:21, 25F
懂了!感謝k大耐心解釋m(_ _)m
※ 編輯: ssssIssss (140.112.25.105), 01/15/2017 13:22:23
→
01/15 13:22, , 26F
01/15 13:22, 26F
差別在於..? 不然題型會有什麼其他的link list型呢(只寫過交、台考古QQ)
※ 編輯: ssssIssss (140.112.25.105), 01/15/2017 13:23:46
→
01/15 13:23, , 27F
01/15 13:23, 27F
→
01/15 13:35, , 28F
01/15 13:35, 28F
→
01/15 13:35, , 29F
01/15 13:35, 29F
→
01/15 13:37, , 30F
01/15 13:37, 30F
→
01/15 13:37, , 31F
01/15 13:37, 31F
應該是的XD 感恩!
※ 編輯: ssssIssss (140.112.25.105), 01/15/2017 13:45:52
→
01/15 14:15, , 32F
01/15 14:15, 32F
→
01/15 14:17, , 33F
01/15 14:17, 33F
→
01/15 14:19, , 34F
01/15 14:19, 34F
推
01/15 14:40, , 35F
01/15 14:40, 35F
→
01/15 14:40, , 36F
01/15 14:40, 36F
推
01/15 14:42, , 37F
01/15 14:42, 37F
→
01/15 14:43, , 38F
01/15 14:43, 38F
→
01/15 14:43, , 39F
01/15 14:43, 39F
我的理解是,在第二小部分中的link list,因為沒有index,所以singly linked list需
要花費O(n)找出前一個node(因為進行刪除時前一個node的link要指向刪除之點的下一個
node)
而Double linked list因為可以直接藉由左邊的link指向上個node,所以不用搜尋上一個
nose
而O(log(n))我就不懂了,因為binary search只支援Random Access才對...?
※ 編輯: ssssIssss (140.112.25.105), 01/15/2017 15:16:23
→
01/15 21:15, , 40F
01/15 21:15, 40F
→
01/15 21:15, , 41F
01/15 21:15, 41F
→
01/15 22:24, , 42F
01/15 22:24, 42F
→
01/16 08:36, , 43F
01/16 08:36, 43F
→
01/16 10:38, , 44F
01/16 10:38, 44F
→
01/16 10:38, , 45F
01/16 10:38, 45F
→
01/16 10:40, , 46F
01/16 10:40, 46F
→
01/16 10:40, , 47F
01/16 10:40, 47F
→
01/16 10:40, , 48F
01/16 10:40, 48F
→
01/16 10:42, , 49F
01/16 10:42, 49F
→
01/16 10:55, , 50F
01/16 10:55, 50F
→
01/16 10:55, , 51F
01/16 10:55, 51F
→
01/16 10:57, , 52F
01/16 10:57, 52F
→
01/16 10:57, , 53F
01/16 10:57, 53F
→
01/16 11:06, , 54F
01/16 11:06, 54F
推
01/16 19:36, , 55F
01/16 19:36, 55F
→
01/16 19:36, , 56F
01/16 19:36, 56F
→
01/17 20:06, , 57F
01/17 20:06, 57F
推
01/24 14:42, , 58F
01/24 14:42, 58F