这个算法的时间复杂度是多少?

What is the scale of time complexity of this algorithm?

我有一个列表的列表,长度不同,我的算法在子列表中的每个元素上运行。

我的时间复杂度应该是多少?

不知道写成O(n * m)好不好,因为n是parent list的长度,m是t的平均长度 E 个子列表,或者可能是 O(n),因为 n 是总元素数。

请解释符号的含义(例如n是父列表的长度)。

如果你有 n 个子列表,每个子列表有 m 个元素,n*m 表示正在处理的元素总数,因此它的复杂度为 O(n*m)

如果你的子列表的元素数量不相等,可以将其总结为O(N),其中N是数组中元素的总数。

您可以定义变量,所以说“O(n),其中 n 是输入的大小”完全没问题。

您的情况似乎类似于“稀疏”矩阵方法:稀疏矩阵具有 well-defined 宽度和高度,以及总大小(non-zero 元素)。算法性能描述可以酌情使用所有三个参数。

归根结底,应该是为了便于描述算法。

您总共执行了 N 次操作。因此,除非您的算法访问其中的一些其他元素,否则这将使其成为 O(N) 操作。从一个子列表转换到下一个子列表的行为,即使需要相当长的时间,也是一个 O(m) 操作。但是由于 m 小于 N,您可以忽略它,因为随着 N 变得非常大,它会淹没 O(m) 时间。事实上,'Order of' 分析的全部目的是展示算法在极端条件下的响应能力。