这个 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),这意味着算法的增长率与输入大小成线性关系。
希望您能理解,否则请按照我分享的教程进行操作。