堆(Heap) |
O(log(n)): push,pop; O(1):top |
全局动态找最大最小 |
高 |
低 |
哈希表(Hash table) |
O(1): insert,find,delete |
查询元素是否存在,key-value查询问题 |
高 |
低 |
前缀树(Trip) |
O(1): insert,delete |
和哈希表解决问题类似,查询元素是否存在,key-value查询问题 |
中 |
低 |
并查集(UnionFind) |
O(1): union,find |
动态合并集合并判断两个元素是否在同一个集合 |
中 |
低 |
平衡排序二叉树(Balanced BST) |
O(log(n)): insert,delete,max,min,lower,upper |
动态增删查改并支持找全局最大最小值; 找比某个数大的最小值和比某个数小的最大值可以用(尽可能接近) |
低 |
高 |
跳跃表(Skip List) |
O(log(n)): insert,upper |
和Balanced BST解决的问题一样,并能一直维持一个有序链表 |
低 |
高 |
树状数组(Binary Indexed Tree) |
O(log(n)): insert,range,sum |
增删改的同时,解决区间求和问题 |
低 |
中 |
线段树(Segment Tree) |
O(log(n)): insert,range max,range min,range sum,upper; O(1):global max,global min |
增删改的同时,解决区间求值问题,sum 等等可以完全替代 |
低 |
中 |