1. Stack 棧
先進後出(FILO),或者叫後進先出(LIFO)
操作 | 複雜度 |
---|---|
添加 | O(1) |
刪除 | O(1) |
查詢 | O(n) |
P.S: 因爲元素是無序的,查詢的時候幾乎每個元素都要訪問一次,所以查詢的時間複雜度是 O(n)的
2. Queue 隊列
先進先出(FIFO) , 後進後出(LILO)
操作 | 複雜度 |
---|---|
添加 | O(1) |
刪除 | O(1) |
查詢 | O(n) |
3. Deque 雙端隊列
官方文檔
deque 是 Double-End Queue 的簡寫
“頭和尾都可以進行元素的出和入”
操作 | 複雜度 |
---|---|
添加 | O(1) |
刪除 | O(1) |
查詢 | O(n) |
4. Priority Queue 優先隊列
在 Python 裏面調用是 heapq
這裏可能是因爲 python 的優先隊列是 heap實現的
官方文檔
from collections import heapq
操作 | 複雜度 |
---|---|
插入 | O(1) |
取出 | O(log(n)) |
P.S:對於優先隊列來說,雖然時間複雜度變高了,但是優先隊列的順序不再是先入先出/後入後出了