gpt4 book ai didi

stack - 堆栈、队列、集合和双端队列的 Big-O 是什么?

转载 作者:行者123 更新时间:2023-12-04 22:12:08 27 4
gpt4 key购买 nike

与插入、搜索、索引、空间和删除复杂性相关的堆栈、队列、集合和双端队列的 Big-O 效率是多少?

最佳答案

这实际上取决于每个数据结构的实现。我将讨论一些,以便您了解如何确定这一点。

让我们假设 Stack 类是使用 Node 实现的(它也可以用 LinkedListArrayListarrray 等来实现)。

Node top, bottom;
public Stack(Node n){
top = bottom = n;
}

Stack 有 3 个主要方法: peek , push , 和 pop .
public int peek(){
return top.value; //only return value
}

没有涉及太多处理。它只是返回一个原始值。这是 O(1) 对于时间和空间。
public void push(Node n){
n.next = top;
top = n;
}

仍然没有真正的处理。这是 O(1) 对于时间和空间。让我们跳过 pop()并尝试更有趣的事情。让我们尝试一个名为 contains(int v) 的方法.它将搜索堆栈以查看它是否包含 Node其中包含一个等于 v 的值.
public bool contains(int v){
Node current = top;
while(current != null){
if(current.value == v){
return true;
}
current = current.next;
}
return false;
}

基本上,我们将遍历 Node 引用,直到找到值或到达终点。在某些情况下,您会在早期发现值(value),而在某些情况下,您会发现值(value)。但是,我们关心最坏的情况!最糟糕的情况是我们必须检查每一个 Node .说有 节点,那么我们有 O(n) .

你可以将这些分析技巧应用到其他数据结构上,剩下的就可以自己解决了。还不错。祝你好运。 :)

关于stack - 堆栈、队列、集合和双端队列的 Big-O 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25413130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com