使用链表在堆栈中插入n个元素的时间复杂度是多少?

时间:2011-06-15 18:44:01

标签: algorithm time-complexity asymptotic-complexity

堆栈中的每个插入都是O(1),因此插入'n'个元素O(n)所需的时间是多少? 我们也能为哈希表说同样的话吗?在平均情况下,在哈希表中插入'n'个元素所需的时间= O(n)?

2 个答案:

答案 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)”。

更具体一点。在您的情况下插入哈希表是:

  • 制作hash = O(1)
  • 插入使用hash = O(1)
  • 选择的堆栈

整个哈希插入是O(1)。所以 n 操作是O(n)。

我的建议:对你的考试(你使用的结构,它们的实现和复杂性)非常具体,因为所有这些细节都可能对所有方程的结果产生重大影响。