堆栈中的每个插入都是O(1),因此插入'n'个元素O(n)所需的时间是多少? 我们也能为哈希表说同样的话吗?在平均情况下,在哈希表中插入'n'个元素所需的时间= O(n)?
答案 0 :(得分:3)
是。主导因素不是插入时间,它是恒定的,它是迭代你插入的所有东西所花费的时间。如果插入没有在恒定时间内发生,那将会更复杂。
请注意,在HashTable的情况下,很大程度上取决于HashTable是否必须增长或重新发生其中的所有内容,但是对于简单的情况(即假设表足够大以容纳所有内容,并且您的哈希码生成)不会产生碰撞)插入的上限应为n。
答案 1 :(得分:0)
堆栈中的每个插入都是O(1),因此插入'n'个元素O(n)所需的时间是多少? 我们也能为哈希表说同样的话吗?在平均情况下所花费的时间 在哈希表中插入'n'个元素= O(n)?
正如您提到的 stack ,我假设我们使用 stack (in chaining manner, using closed addressing)解决哈希表中的冲突。
在这种情况下,我回答:
是的,“平均情况是在哈希表中插入'n'个元素所花费的时间= O(n)”。
更具体一点。在您的情况下插入哈希表是:
整个哈希插入是O(1)。所以 n 操作是O(n)。
我的建议:对你的考试(你使用的结构,它们的实现和复杂性)非常具体,因为所有这些细节都可能对所有方程的结果产生重大影响。