首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++函数的效率

C++函数的效率
EN

Stack Overflow用户
提问于 2013-10-31 17:51:45
回答 1查看 141关注 0票数 2

有人告诉我,以下代码的效率为O(1):

代码语言:javascript
复制
void mystack::Pop_element()
{
    assert ( nelem > 0 );

    nelem--;

    if ( nelem < reserved / 4 ){

        Resize ( reserved / 2 );

    }
}

但我真的不明白为什么,因为Resize有效率O(n) (这是事实,我们不应该知道Resize内部的代码)。那么,整个代码不也应该具有O(n)效率吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-31 17:55:43

该代码的复杂性是O(1),除非在非常罕见的情况下。

其思想是,当您(程序员)想要使用堆栈,您初始化堆栈,以拥有足够的空间“几乎”任何时候。然后调整大小永远不会被调用,或者至少很少被调用。

在特殊情况下是迂腐的,可以将其称为摊销常数时间,因为时间复杂性是不变的,除非在特殊情况下。

另见:Constant Amortized Time

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19713430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档