需要有关 Big O Notation 的信息

Need information on Big O Notation

问你一个随机问题。如果你有一个方法必须检查数组中的每个单独的地方,可以说这个方法有 O(n) 的符号吗?

我不确定我的答案是否正确的原因是,据我所知,O(n) 与数组中保存的项目数有关,而我的假设是基于关于数组的实际大小?

如果您的算法必须查看数组中的每一项,则该算法的复杂度为 O(n)。如果数组是否已满并不重要,因为您可以灵活地定义 n。它可以是数组的大小,也可以是数组中非空元素的数量。如果您的算法必须查看空数组槽以查看它们是否为空,请使用大小。 (如果这是一个真正的性能问题,可能需要不同的数据结构。)

对于一个非常人为的例子,如果处理每个非空数组元素需要一小时,但检查空值需要一纳秒,那么您应该将 n 定义为实际存在的元素数,因为那是什么将决定算法如何扩展。