【问题标题】:Checking time complexity of a program检查程序的时间复杂度
【发布时间】:2023-02-26 15:29:44
【问题描述】:

我是初学者,我想知道如何检查 Python 程序的时间复杂度。

例如这段代码的时间复杂度:

def PrefixCount(words, pref):
    counter = 0
    for w in words:
        if w.startswith(pref):
            counter += 1
    return counter

我在互联网上搜索了它,但我找不到一个简单的方法。你介意向我解释一下如何做到这一点吗? 谢谢

【问题讨论】:

    标签: time-complexity


    【解决方案1】:

    这个 YouTube 教程解释得非常透彻:https://www.youtube.com/watch?v=D6xkbGLQesk

    这仍然是我的看法,

    要找到算法的时间复杂度,您需要分析随着输入大小的增加,算法执行的步骤数或操作数。

    以下是计算算法时间复杂度的步骤:

    确定输入大小:确定控制输入数据大小的参数。

    计算操作数:根据输入大小计算算法执行的基本操作数。基本运算可以包括算术运算、比较、赋值和函数调用。

    将操作数表示为输入大小的函数:编写一个表达式,将操作数表示为输入大小的函数。

    简化表达式:使用因式分解、合并相似项和忽略低阶项等数学技巧来简化表达式。

    确定时间复杂度:通过查看简化表达式的主导项来确定时间复杂度,它表示算法随着输入大小的增加而增长的速率。

    例如

    算法总和(n)

    输入:一个整数 n

    输出:从1到n的所有整数之和

    sum = 0
    for i = 1 to n do
      sum = sum + i
    end for
    return sum
    

    现在,

    输入大小:输入大小为n。

    计算操作数:该算法在循环内对 i 的每个值执行一次加法运算和一次赋值运算。它还在循环外执行一个初始化操作。因此,操作总数为 1 + n + n = 2n + 1。

    将操作数表示为输入大小的函数:操作数为 2n + 1。

    简化表达式:我们可以忽略低阶项 1 并将表达式简化为 2n。

    确定时间复杂度:时间复杂度为 O(n),这意味着算法的增长率与输入大小成线性关系。

    希望您能理解,否则请按照我分享的教程进行操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-15
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 2019-07-10
      相关资源
      最近更新 更多