首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆栈排序算法的时间复杂度分析

堆栈排序算法的时间复杂度分析
EN

Stack Overflow用户
提问于 2016-09-16 04:54:23
回答 2查看 432关注 0票数 0

我一直在努力解决破解编码面试的问题,为一些面试做准备。我能够解决堆栈排序问题,但我很难找到如何解释时间复杂性的方法。我的解决方案非常类似于书中提供的解决方案,我已经对它进行了相当多的测试,所以我确信它是正确的。任何对思维过程的洞察力,都将是非常感谢的,我们将通过这个过程来分析这个算法。书上说是O(n^2)。以下是算法:

代码语言:javascript
复制
def sort_stack(stack):
    temp_stack = Stack()
    while not stack.is_empty():
        v = stack.pop()
        if temp_stack.is_empty() or temp_stack.peek() <= v:
            temp_stack.push(v)
        else:
            while not temp_stack.is_empty() and temp_stack.peek() > v:
                stack.push(temp_stack.pop())
            temp_stack.push(v)
    while not temp_stack.is_empty():
        stack.push(temp_stack.pop())

顺便提一句:我使用这种方法对堆栈进行排序,以便在问题的约束范围内。我知道有更快的解决办法。

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-16 05:34:13

考虑最坏的情况,在这种情况下,对堆栈中的每一项进行排序都需要完全清空临时堆栈。(当试图对反向排序的堆栈进行排序时会发生这种情况。)

清空/重新填充每个项目的临时堆栈的成本是多少?

有多少件物品?

将它们结合在一起就可以得到O(n^2)。

票数 2
EN

Stack Overflow用户

发布于 2016-09-16 05:09:13

这可能是一种过于简化的算法分析方法,但是每当我看到嵌套循环时,我想n^2。三个嵌套循环-- n^3等等,作为简单程序的经验法则,计数嵌套循环。这是一个非常有用的教程:http://cs.lmu.edu/~ray/notes/alganalysis/

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

https://stackoverflow.com/questions/39523947

复制
相关文章

相似问题

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