時間復雜度 - 各種數據結構的時間復雜度分析


參考

https://cloud.tencent.com/developer/ask/112047

https://blog.csdn.net/chao2016/article/details/82425317

詳細解析

數組

  • 設置,在特定索引處檢查元素:O(1)
  • 搜索O(n)數組是否未排序,O(log n)如果數組排序並使用類似於二分搜索的東西,
  • Delete陣列中沒有可用的操作。根據我們的要求,我們可以通過將其設置為某個特定值來象征性地刪除元素,例如-1,0等
  • 同樣,Insert對於數組基本上Set是在開始時提到的

數組列表:

  • 添加攤銷O(1)
  • 刪除O(n)
  • 包含O(n)
  • 尺寸O(1)

鏈接列表:

  • 插入O(1),如果在頭部完成,則O(n)在其他任何地方,因為我們必須線性移動鏈表到達該位置。
  • 刪除O(1),如果在頭部完成,則O(n)在其他任何地方,因為我們必須線性移動鏈表到達該位置。
  • 正在搜索O(n)

雙鏈表:

  • 插入:如果在頭部或尾部完成,則O(1)O(n)如果在其他任何地方,因為我們必須線性移動鏈表到達該位置。
  • 刪除O(1),如果在頭部或尾部完成,則O(n)在其他任何地方完成,因為我們必須線性移動鏈表到達該位置。
  • 正在搜索O(n)

堆棧:

  • O(1)
  • PopO(1)
  • O(1)
  • 搜索(像查找,像一個特殊的操作):O(n)(我猜是這樣)

隊列/ Deque /循環隊列:

  • 插入O(1)
  • 刪除O(1)
  • 尺寸O(1)

二進制搜索樹:

  • 插入,刪除和搜索:平均情況:O(log n),最差情況:O(n)

紅黑樹:

  • 插入,刪除和搜索:平均情況:O(log n),最差情況:O(log n)

堆/ PriorityQueue(最小/最大):

  • 查找最小值/查找最大值O(1)
  • 插入O(log n)
  • 刪除最小值/刪除最大值O(log n)
  • 提取最小/提取最大值O(log n)
  • 查找,刪除(如果有的話):O(n),我們將不得不掃描所有的元素,因為它們沒有像BST那樣排序

HashMap中/Hashtable/ HashSet的:

  • 插入/刪除O(1)
  • 重新大小/散列O(n)
  • 包含O(1)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM