答案 0 :(得分:1)
了解复杂性是如何发生的主要是理解因素出现在哪里并以某种方式将它们组合在一起。如果正在执行的操作是以与其他操作相关的方式完成的,则复杂性成倍增加;如果它们是连续执行的,则会增加复杂性。
列表遍历,例如,每个订单n;所以你可能知道O(n²)复杂性是由双嵌套循环算法产生的,O(n³)来自三重嵌套的算法。
根据我的经验,现在用多个术语编写复杂性并不常见 - 例如O(n²+ 2n + 1)。这是因为我们通常关心大n的复杂性,在这种情况下,低阶项最终可以忽略不计。但是,您可以通过嵌套循环算法可视化这样的事情,其中在外部循环中执行两个单独的步骤,即O(1)(可能向集合添加内容),以及在循环外部的单个O(1)操作
类似地,树结构通常产生对数复杂性。完整且平衡的二叉树的高度与log 2 (n)成比例,其中n是树中节点的数量。因此,使用递归算法在树中找到某些东西 - 可以被认为是跨越树的级别 - 是log 2 (n)。
请注意,在最坏的情况下,二叉树不完整和平衡(即每个节点只填充一个子节点),树在拓扑上与列表相同,因此搜索它是O(n )。这就是许多算法列出一系列复杂性的原因。