几种数据结构的查找、插入、删除的时间复杂度对比
- 表
数据结构 | 查找 | 插入 | 删除 |
---|---|---|---|
数组 | O(n) | O(n) | O(n) |
有序数组 | O(logn)(二分查找) | O(n) | O(n) |
单链表 | O(n) | O(n) | O(n) |
有序单链表 | O(n) | O(n) | O(n) |
双链表 | O(n) | O(n) | O(n) |
有序双链表 | O(n) | O(n) | O(n) |
二叉树 | O(n) | O(n) | O(n) |
二叉搜索树 | O(logn) | O(logn) | O(logn) |
红黑树 | O(logn) | O(logn) | O(logn) |
平衡二叉树 | O(logn) | O(logn) | O(logn) |
哈希表 | O(1) | O(1) | O(1) |
- 哈希表
红黑是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决,而AVL是严格平衡树,因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多。因此实际应用中,若搜索的次数远远大于插入和删除,那么选择AVL,如果搜索,插入删除次数几乎差不多,应该选择RB。