【发布时间】:2016-01-25 22:46:54
【问题描述】:
我正在创建一个哈希表并从一个未排序的数组中插入n 元素。当我调用哈希函数n 时。创建/插入哈希表的时间复杂度不是O(n) 吗?
我尝试到处搜索,但他们提到了发生冲突时的复杂性,但没有说明如何在完美的情况下在 O(1) 中创建哈希表,因为我必须遍历数组才能选择第一个元素加一并放入哈希表中?
【问题讨论】:
-
您想让插入时间保持不变吗?是吗?
-
@ViniciusZaramella 不,如果我已经遍历数组中的每个元素以便将它们一一插入到哈希表中,我无法理解如何将哈希表插入为 0(1)。如果我有 10 个元素,我将运行哈希函数 10 次,以找到每个元素在哈希表中的位置。
-
是的,但是 (O(n)) 是用数组的内容填充哈希表的复杂性。 O(1) 是关于一次插入的复杂性。
-
不确定,可能是因为更重要的是要知道在哈希表中插入值的时间不会随着哈希表的大小而增加。
-
这有点像说“为什么我们以公里/小时而不是米/秒来衡量汽车的速度”——它更多地表示我们通常行驶的距离和时间范围。加载表时以及之后的任何时间都可能发生插入。它是更有用的单元,并且与删除或查找等其他操作相比更容易。