哈希是一种经典的数据结构,通过额外的一个数组空间,实现O(1)的查找。 查找迅速,但是带来的缺点是hash table的长度如果过长,整体占用空间会很大,因此提出了散列函数,用取余,随机,定义函数等方式将一个数映射到一个地址空间,如果存在了散列冲突,解决方法分为openhash,closehash。
wiki链接
open hash
开放定址,一个数最后被散列到的地址空间不固定,不能定义erase操作。
1 | const int N = 1e3; //length |
close hash
散列地址固定,但是hash table中存的是数组。
set
set是一种红黑树的结构,如果N过大建立N个红黑树的开销会很大,
1 | const int N = 1e3; |
vector
1 | const int N = 1e3; |