Algorithm 在包含非常大的条目的哈希表中维护O(1)

Algorithm 在包含非常大的条目的哈希表中维护O(1),algorithm,data-structures,hash,Algorithm,Data Structures,Hash,我正在编写一个代码,在实现散列的同时实现单独的链接。我的问题是,当我插入大量的条目时,显然会有大量的冲突导致大量的链表。那么我如何在搜索中保持O(1)时间?我可以实现自平衡BST而不是链表。但这也需要O(logn)时间 哈希冲突是哈希表的本质。只有一种方法可以避免哈希冲突:分配更多内存。您的哈希表需要更大。但这也需要O(logn)时间。对于链表,这似乎比O(n)时间要好。假设您有一个好的哈希函数,当您保持负载因子(条目数除以存储桶数)时,哈希表工作得最好低于75%。有人说70%。在这上面,你开始

我正在编写一个代码,在实现散列的同时实现单独的链接。我的问题是,当我插入大量的条目时,显然会有大量的冲突导致大量的链表。那么我如何在搜索中保持O(1)时间?我可以实现自平衡BST而不是链表。但这也需要O(logn)时间

哈希冲突是哈希表的本质。只有一种方法可以避免哈希冲突:分配更多内存。您的哈希表需要更大。但这也需要O(logn)时间。对于链表,这似乎比O(n)时间要好。假设您有一个好的哈希函数,当您保持负载因子(条目数除以存储桶数)时,哈希表工作得最好低于75%。有人说70%。在这上面,你开始得到大量的碰撞。若你们的散列函数并没有产生一个统一的分布(或相近的分布),那个么你们会遇到很多冲突。只要把表做得足够大就行了。例如,创建大小为NumKeys/2的哈希表;