O(1) |
O(log n) |
O(n) |
O(nlogn) |
n^2 |
2^n |
n! |
一步到位 |
階層數 |
線性 |
線性+階層 |
線性+線性 |
定數細胞分裂 |
高速細胞分裂 |
|
|
|
超級分支 |
|
|
|
|
|
|
底數漸大 |
底數小 |
底數大=>小 |
|
|
|
|
階層小 |
底數漸大 |
階層一樣漸大 |
|
index 搜尋 |
二元搜尋 |
陣列遍歷 |
Merge Sort |
Bubble Sort |
費氏數列 |
排列組合 |
動作 |
解釋 |
big-O |
備註 |
Search (by value) |
一個一個查 |
O(n) |
|
Search (by index) |
直接算出記憶體位置 |
O(1) |
|
Insert (by value) |
直接放最後面,低機率需要擴展 |
O(1) |
|
Insert (by index) |
可能需要擴展或是推動 |
|
推動即O(n) |
Insert (expand) |
擴展動作稱為expand |
+O(n) |
|
Delete (by value) |
先搜尋再推移 |
O(n) |
比by index更慢 但還是O(n) |
Delete (by index) |
直接刪除再推移 |
O(n) |
|
動作 |
解釋 |
big-O |
備註 |
Search (by value) |
訪問next指標直到查到 |
O(n) |
|
Insert (by value) |
最後一個Node的next指過去 |
O(1) |
|
Delete (by value) |
先搜尋到self再把prevNode的Next指向nextNode |
O(n) |
|
- 適合搜尋
- 不適合插入
- 不適合搜尋
- 適合需要大量插入
- 不適合刪除
用位置搜尋多使用Array,新增或插入多則用LinkedList