Data structures 使用linkedlist的队列与使用哈希表存储桶数组的队列的优点?
我知道两种实现队列的方法,使用链表或数组。在哈希表中生成bucket时应该使用哪一个,当bucket超过条目限制时,哈希表需要重新刷新。我是否可以使用其他数据结构获取O(1)排队和解排队以及索引 使用数组,我可以让bucket大小变为更高的值,因为数组中的索引允许我对键(按排序顺序插入)使用二进制搜索。如果桶大小变为1000,则搜索成为LN(1000)vs 1000。插入操作变为O(n),但查找比插入更常见 使用链表我得到O(1)插入,删除,但我也得到O(n)Data structures 使用linkedlist的队列与使用哈希表存储桶数组的队列的优点?,data-structures,linked-list,hashmap,queue,Data Structures,Linked List,Hashmap,Queue,我知道两种实现队列的方法,使用链表或数组。在哈希表中生成bucket时应该使用哪一个,当bucket超过条目限制时,哈希表需要重新刷新。我是否可以使用其他数据结构获取O(1)排队和解排队以及索引 使用数组,我可以让bucket大小变为更高的值,因为数组中的索引允许我对键(按排序顺序插入)使用二进制搜索。如果桶大小变为1000,则搜索成为LN(1000)vs 1000。插入操作变为O(n),但查找比插入更常见 使用链表我得到O(1)插入,删除,但我也得到O(n) 我的问题是,我可以同时使用其他数据
我的问题是,我可以同时使用其他数据结构的好处吗?或者使用这些数据结构的好处明显大于使用其他数据结构的好处吗?在实现哈希表的存储桶时,应该使用链表,因为它们可以调整大小。在散列映射中,您需要在bucket中执行的唯一操作是遍历和附加新项,这两项都可以在每个元素
O(1)
中完成。使用数组时,分配的内存不必要或太少,因为无法调整其大小。此外,您不应该使用队列,最好只使用普通的链表。当您实现哈希表的存储桶时,您应该使用链表,因为它们可以调整大小。在散列映射中,您需要在bucket中执行的唯一操作是遍历和附加新项,这两项都可以在每个元素O(1)
中完成。使用数组时,分配的内存不必要或太少,因为无法调整其大小。此外,你不应该使用队列,最好只使用普通的链表。我认为你问错了问题。与其担心如何处理一个桶中的大量物品,不如关心为什么你的桶已经满了
哈希表假设了两件事:
无论您如何实现存储桶,当您超过哈希表的容量(或者如果您的哈希表实现自动调整大小,则为负载因子阈值)时,您都会不时付出O(n)调整大小的代价。我认为您问错了问题。与其担心如何处理一个桶中的大量物品,不如关心为什么你的桶已经满了 哈希表假设了两件事:
无论您如何实现存储桶,当您超过哈希表的容量(或者如果您的哈希表实现自动调整大小,则为负载因子阈值)时,您都会不时地付出O(n)调整大小的代价。我试图理解您为什么要为哈希表存储桶使用队列。你为什么不直接使用动态列表?@JimMischel你的权利,让我解释一下,编辑这个问题。我试图理解你为什么要使用队列作为哈希表存储桶。你为什么不直接使用动态列表呢?@JimMischel你说得对,让我解释一下,编辑这个问题。因此,如果桶太大或者大约70%的桶都满了,我应该重新刷新这个表?我不应该在桶中使用另一个哈希表。@AchyutRastogi:我从未见过实现