【发布时间】:2021-12-25 19:53:45
【问题描述】:
我有 (n×n) 个下三角矩阵,那么它的复杂度是多少?它说这将是O(n ^ 2)。 那么如果我使用一维数组来显示这个下三角矩阵,那么这次的复杂度是多少?O(n)还是其他? 比较每一回合的两种复杂性。 在 c++ 上运行的动作。 我需要每回合的数组大小。
【问题讨论】:
-
"如果我使用一维数组来显示这个下三角矩阵,那么这次的复杂度是多少?" -- 在这种情况下你的
n是什么?如果您想将此空间要求与之前的空间要求进行比较,n更好地表示相同的东西,即三角矩阵的一维。就n而言,您的一维数组的大小是多少? -
是的,实际上我认为我们应该得到 (n) 的数组大小,所以我们可以解释每个数组的复杂性和大小
-
@mia.tt 当你说 O(n^2) 和 O(n) 时,n 指的不是同一个数量。第二个 n 与第一个 n^2 的大小相同。询问矩阵的复杂性也是没有意义的。复杂性是指应用于数据类型的算法,例如将其打印为 O(n^2) 或将其乘以标量为 O(n^2)。
-
@user904963 Big-O 表示法也用于表示空间要求。虽然“复杂性”是一个奇怪的词,但我认为初学者使用它是可以理解的。
-
@mia.tt " 我认为我们应该得到 (n) 的数组大小" -- 如果
n是你的数组的大小,那么这两种情况使用 O(n) 空间,因为每个数组都和它自己一样大。