æ ¹æ®Wikipedia article on linked lists,在链表ä¸é—´æ’入被认为是O(1)。我认为这将是O(n)。您是å¦éœ€è¦æ‰¾åˆ°å¯èƒ½æŽ¥è¿‘列表末尾的节点?
æ¤åˆ†æžæ˜¯å¦ä¸è€ƒè™‘节点æ“作的å‘现(虽然它是必需的)而åªæ˜¯æ’入本身?
编辑:
 Âé“¾æŽ¥åˆ—è¡¨ä¸Žæ•°ç»„ç›¸æ¯”æœ‰å‡ ä¸ªä¼˜ç‚¹ã€‚åœ¨åˆ—è¡¨çš„ç‰¹å®šç‚¹æ’å…¥å…ƒç´ æ˜¯ä¸€ä¸ªæ’定时间æ“作,而在数组ä¸æ’å…¥å¯èƒ½éœ€è¦ç§»åŠ¨ä¸€åŠæˆ–æ›´å¤šå…ƒç´ ã€‚
上述陈述对我æ¥è¯´æœ‰ç‚¹è¯¯å¯¼ã€‚å¦‚æžœæˆ‘é”™äº†ï¼Œè¯·çº æ£æˆ‘,但我认为结论应该是:
阵列:
å…³è”列表:
æˆ‘è®¤ä¸ºä½ å”¯ä¸€ä¸€æ¬¡æ‰¾ä¸åˆ°ä½ç½®å°±æ˜¯ä½ ä¿ç•™äº†æŸç§æŒ‡é’ˆï¼ˆåœ¨æŸäº›æƒ…å†µä¸‹ä¸Žå¤´éƒ¨å’Œå°¾éƒ¨ä¸€æ ·ï¼‰ã€‚å› æ¤ï¼Œæˆ‘们ä¸èƒ½æ–然说链接列表总是超过æ’å…¥/åˆ é™¤é€‰é¡¹çš„æ•°ç»„ã€‚
ç”案 0 :(得分:97)
ä½ æ˜¯å¯¹çš„ï¼Œæ–‡ç« è®¤ä¸ºâ€œç´¢å¼•â€æ˜¯ä¸€ä¸ªå•ç‹¬çš„æ“ä½œã€‚å› æ¤æ’入本身就是O(1),但是到达那个ä¸é—´èŠ‚点是O(n)。
ç”案 1 :(得分:21)
ä¸ï¼Œå½“您决定è¦æ’入时,å‡è®¾æ‚¨å·²ç»åœ¨è¿ä»£åˆ—表ä¸é—´ã€‚
链接列表上的æ“ä½œé€šå¸¸ä»¥è¿™æ ·çš„æ–¹å¼å®Œæˆï¼Œå³å®ƒä»¬å®žé™…上ä¸è¢«è§†ä¸ºé€šç”¨â€œåˆ—表â€ï¼Œè€Œæ˜¯ä½œä¸ºèŠ‚ç‚¹é›†åˆ - 将节点本身视为主循环的è¿ä»£å™¨ã€‚å› æ¤ï¼Œå½“您æµè§ˆåˆ—表时,您会注æ„到作为业务逻辑的一部分,需è¦æ·»åŠ æ–°èŠ‚ç‚¹ï¼ˆæˆ–åˆ é™¤æ—§èŠ‚ç‚¹ï¼‰ï¼Œç„¶åŽæ‰§è¡Œæ¤æ“作。您å¯ä»¥åœ¨ä¸€æ¬¡è¿ä»£ä¸æ·»åŠ 50个节点,æ¯ä¸ªèŠ‚点åªæœ‰O(1)时间æ¥å–消链接两个相邻节点并æ’入新节点。
ç¼–è¾‘ï¼šä¼™è®¡ï¼Œä½ è¾“å…¥ç¬¬äºŒä¸ªæ®µè½è€Œä¸æ˜¯ç¬¬ä¸€ä¸ªå“åº”è€…ï¼Œä½ æ˜¯ç¬¬5个和第4个说åŒæ ·çš„事情ï¼
ç”案 2 :(得分:21)
æ’入本身是O(1)。节点å‘现是O(n)。
ç”案 3 :(得分:6)
为了与数组进行比较,这是图表所示的数æ®ï¼Œå®ƒæ˜¯O(1ï¼‰ï¼Œå› ä¸ºæ‚¨ä¸å¿…在新节点之åŽç§»åŠ¨æ‰€æœ‰é¡¹ç›®ã€‚
所以是的,他们å‡è®¾æ‚¨å·²ç»æ‹¥æœ‰æŒ‡å‘该节点的指针,或者获å–指针是微ä¸è¶³é“的。æ¢å¥è¯è¯´ï¼Œé—®é¢˜æ˜¯ï¼šâ€œç»™å®šèŠ‚点在X ,在æ¤èŠ‚点之åŽæ’入的代ç 是什么?â€ä½ å¯ä»¥ä»Žæ’入点开始。
ç”案 4 :(得分:5)
æ’入链表ä¸åŒäºŽè¿ä»£é“¾è¡¨ã€‚您没有找到该项目,您æ£åœ¨é‡ç½®æŒ‡é’ˆä»¥å°†é¡¹ç›®æ”¾åœ¨é‚£é‡Œã€‚如果è¦å°†å…¶æ’å…¥å‰ç«¯é™„近或é 近末端,æ’å…¥ä»ç„¶éœ€è¦é‡æ–°åˆ†é…指针。当然,这å–决于它是如何实现的,但这是列表的优势 - 您å¯ä»¥è½»æ¾æ’入。通过索引访问是数组å‘光的地方。但是,对于列表,找到第n个项目通常是O(n)。至少那是我从å¦æ ¡é‡Œè®°å¾—的。
ç”案 5 :(得分:3)
å› ä¸ºå®ƒä¸æ¶‰åŠä»»ä½•å¾ªçŽ¯ã€‚
æ’入就åƒï¼š
这在任何情况下都是æ’定的时间。
å› æ¤ï¼Œä¸€ä¸ªæŽ¥ä¸€ä¸ªåœ°æ’å…¥nä¸ªå…ƒç´ æ˜¯O(n)。
ç”案 6 :(得分:3)
 Âæ¤åˆ†æžæ˜¯å¦ä¸è€ƒè™‘节点æ“作的å‘现(虽然它是必需的)而åªæ˜¯æ’入本身?
ä½ æ˜Žç™½äº†ã€‚åœ¨ç»™å®šç‚¹æ’å…¥å‡å®šæ‚¨å·²ç»æ‹¥æœ‰æŒ‡å‘è¦åœ¨ä¹‹åŽæ’入的项目的指针:
InsertItem(item * newItem, item * afterItem)
ç”案 7 :(得分:2)
ä¸€æ—¦ä½ çŸ¥é“ä½ è¦æŠŠå®ƒæ”¾åœ¨å“ªé‡Œå°±æ’å…¥O(1)。
ç”案 8 :(得分:2)
ä¸ï¼Œå®ƒä¸è€ƒè™‘æœç´¢ã€‚ä½†æ˜¯å¦‚æžœä½ å·²ç»æ‹¥æœ‰ä¸€ä¸ªæŒ‡å‘列表ä¸é—´é¡¹ç›®çš„指针,那么在那一点æ’入就是O(1)。
å¦‚æžœä½ å¿…é¡»æœç´¢å®ƒï¼Œä½ å¿…é¡»å¢žåŠ æœç´¢æ—¶é—´ï¼Œè¿™åº”该是O(n)。
ç”案 9 :(得分:0)
è¿™ç¯‡æ–‡ç« æ˜¯å…³äºŽå°†æ•°ç»„ä¸Žåˆ—è¡¨è¿›è¡Œæ¯”è¾ƒã€‚æ‰¾åˆ°æ•°ç»„å’Œåˆ—è¡¨çš„æ’å…¥ä½ç½®æ˜¯O(Nï¼‰ï¼Œå› æ¤æ–‡ç« 忽略它。
ç”案 10 :(得分:0)
O(1)å–决于您有一个项目,您将æ’入新项目。 (之å‰æˆ–之åŽï¼‰ã€‚å¦‚æžœä½ ä¸è¿™æ ·åšï¼Œé‚£å°±æ˜¯O(nï¼‰å› ä¸ºä½ å¿…é¡»æ‰¾åˆ°é‚£ä¸ªé¡¹ç›®ã€‚
ç”案 11 :(得分:0)
我认为这åªæ˜¯ä½ 选择用O()表示法计算的一个例å。在æ’å…¥æ£å¸¸æ“作的情况下,count是å¤åˆ¶æ“作。对于数组,æ’å…¥ä¸é—´æ¶‰åŠå°†ä½ç½®ä¸Šæ–¹çš„所有内容å¤åˆ¶åˆ°å†…å˜ä¸ã€‚使用链表,这将æˆä¸ºè®¾ç½®ä¸¤ä¸ªæŒ‡é’ˆã€‚æ— è®ºæ’入什么,您都需è¦æ‰¾åˆ°ä½ç½®ã€‚
ç”案 12 :(得分:0)
如果您对链接列表的æ“作为O(1)åŽæœ‰è¦æ’入的节点的引用 对于一个数组,它ä»ç„¶æ˜¯O(nï¼‰ï¼Œå› ä¸ºä½ å¿…é¡»ç§»åŠ¨æ‰€æœ‰è¿žç»çš„节点。
ç”案 13 :(得分:0)
最常è§çš„情况å¯èƒ½æ˜¯åœ¨åˆ—表的开头或末尾æ’入(列表的末尾å¯èƒ½æ²¡æ—¶é—´æ‰¾åˆ°ï¼‰ã€‚
对比在数组的开头或结尾处æ’入项目(如果数组在最åŽï¼Œåˆ™éœ€è¦è°ƒæ•´æ•°ç»„大å°ï¼Œæˆ–者如果它在开始时调整大å°å¹¶ç§»åŠ¨æ‰€æœ‰å…ƒç´ )。