哈希表的实现需要解决碰撞问题,碰撞解决大体有两种思路,第一种是根据某种原则将被碰撞数据放到其他桶,例如线性探测——如果数据在插入时发生了碰撞,则顺序查找这个桶后面的桶,将其放入第一个没有被使用的桶;第二种策略是不只是容纳单个数据项,而是一个可容纳多个数据项的数据结构(例如链表或红黑树),所有碰撞的数据以某种数据结构的形式组织起来。不论使用了哪种碰撞解决策略,都导致插入和查找操作的时间复杂度不再是O(1)。
参考
哈希表的实现需要解决碰撞问题,碰撞解决大体有两种思路,第一种是根据某种原则将被碰撞数据放到其他桶,例如线性探测——如果数据在插入时发生了碰撞,则顺序查找这个桶后面的桶,将其放入第一个没有被使用的桶;第二种策略是不只是容纳单个数据项,而是一个可容纳多个数据项的数据结构(例如链表或红黑树),所有碰撞的数据以某种数据结构的形式组织起来。不论使用了哪种碰撞解决策略,都导致插入和查找操作的时间复杂度不再是O(1)。
参考