Python - 算法类型



为了比较算法并为特定场景选择特定算法,必须分析算法的效率和准确性。进行此分析的过程称为渐近分析。它指的是用数学计算单位计算任何操作的运行时间。

例如,一个操作的运行时间计算为 f(n),而另一个操作的运行时间计算为 g(n2)。这意味着第一个操作的运行时间将随着 n 的增加而线性增加,而第二个操作的运行时间将随着 n 的增加而呈指数增长。同样,如果 n 非常小,则两个操作的运行时间几乎相同。

通常,算法所需的时间分为三种类型:

  • 最佳情况 - 程序执行所需的最小时间。

  • 平均情况 - 程序执行所需的平均时间。

  • 最坏情况 - 程序执行所需的最多时间。

渐近记号

常用的渐近记号来计算算法的运行时间复杂度。

  • Ο 记号

  • Ω 记号

  • θ 记号

大O记号,Ο

Ο(n) 表示法是表达算法运行时间上限的正式方式。它衡量最坏情况时间复杂度或算法可能完成所需的最长时间。

Big O Notation

例如,对于函数 f(n)

Ο(f(n)) = { g(n) : there exists c > 0 and n0 such that f(n) ≤ c.g(n) for all n > n0. }

Ω 记号,Ω

Ω(n) 表示法是表达算法运行时间下限的正式方式。它衡量最佳情况时间复杂度或算法可能完成所需的最短时间。

Omega Notation

例如,对于函数 f(n)

Ω(f(n)) ≥ { g(n) : there exists c > 0 and n0 such that g(n) ≤ c.f(n) for all n > n0. }

θ 记号,θ

θ(n) 表示法是表达算法运行时间下限和上限的正式方式。它表示如下:

Theta Notation
θ(f(n)) = { g(n) if and only if g(n) =  Ο(f(n)) and g(n) = Ω(f(n)) for all n > n0. }

常见渐近记号

下面列出了一些常见的渐近记号:

常数 Ο(1)
对数 Ο(log n)
线性 Ο(n)
n log n Ο(n log n)
平方 Ο(n2)
立方 Ο(n3)
多项式 nΟ(1)
指数 2Ο(n)
广告