算法复杂度和大O符号的介绍

291 阅读2分钟

让我们讨论一下算法的复杂性,特别是我们如何在算法的背景下衡量它。

不同的算法,给定相同的问题和相同的输入,需要不同的时间来解决这个问题。

有时,时间会有很大的不同,特别是随着他们需要管理的元素数量的增加。

这种复杂性被称为大O,原因无他,我们使用大写字母o 作为惯例。O(n)O(1) ,以此类推。

你将看到的最流行的大O的衡量标准,按效率较高到效率较低排序,是。

  • O(1)
  • O(log n)
  • O(n)
  • O(n * log n)
  • O(n^2)
  • O(n!)

其中n 是输入的数量。例如,如果你需要对2个项目进行排序,n 是2,如果你需要对20.000个项目进行排序,n 是20.000。

但是你不需要在O() 计算中替代这个值。那是一个符号,意在向开发者和每一个关注算法的人提示其效率。

一个具有O(1) 效率的算法是我们能找到的最好的算法。执行的时间并不取决于输入的数量,它总是需要相同的时间来执行。

一个具有O(n) 的算法与输入的数量成线性比例。如果有10个项目,需要1秒,有100个项目,需要10秒。

一个带有O(n^2) 的算法,如果有4个项目需要16秒,有10个项目需要100秒。

我们将在接下来的课程中分析和计算大量算法的大O效率。

需要注意的是,Big O符号并不能给我们提供判断一个算法是否会比另一个算法快的所有信息,特别是如果它们的Big O值相同。在这种情况下,你需要使用其他工具来测试效率。

但是当算法有不同的类别时(例如O(n)O(n^2) ),就没有什么疑问了。