簡體   English   中英

在插入、刪除的最佳情況下,排序數組、排序鏈表和二叉搜索樹的時間復雜度是多少

[英]What's the time complexity for Sorted Array, Sorted Linked List and Binary Search Tree in Best Case for Insertion, Deletion

在插入、刪除的最佳情況下,排序數組、排序鏈表和二叉搜索樹的時間復雜度是多少(為什么?)。 此外,人們通常如何從算法中確定最佳情況。 我了解如何從算法中確定最壞的情況,例如 for 循環將是 O(n)。 到目前為止,我只在網上找到了平均和最差的情況,沒有一個顯示最好的情況。

這取決於您認為最好的情況。 例如,如果我認為最好的情況是“插入唯一元素/刪除唯一元素”,所有樹結構都需要 O(1) 時間。 在這種情況下,我認為沒有最好的情況,因為

  1. 在 Sorted Array an Linked List 中,您必須找到 position 在其中插入新元素 O(n),然后您必須移動其他元素(數組中的 O(n),鏈表中的 O(1)),刪除的復雜性相同
  2. 在二叉搜索樹中,插入/刪除操作花費所有 O(h) 時間,其中 h 是樹的高度。 如果你的樹是平衡的(AVL 或紅黑樹),h = O(log n),所以復雜度變為 O(log n)

在這種情況下,大 O 表示法描述了所有情況。

PS 通常最好的情況不會被考慮那么多,因為它們已經被考慮在中等情況下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM