【发布时间】:2020-03-12 12:45:09
【问题描述】:
假设我将矩阵存储为列表列表,其中第一个列表表示行,该列表中的每个元素都是表示该行中值的列表。查找元素的时间复杂度是多少?
如果我没记错的话,使用线性搜索在列表中查找元素的平均时间复杂度是 O(n),这是否意味着列表列表的平均时间复杂度是 O(n2)?
【问题讨论】:
-
如果
n是整个矩阵的元素个数,那么它就是O(n)。
标签: list matrix time-complexity
假设我将矩阵存储为列表列表,其中第一个列表表示行,该列表中的每个元素都是表示该行中值的列表。查找元素的时间复杂度是多少?
如果我没记错的话,使用线性搜索在列表中查找元素的平均时间复杂度是 O(n),这是否意味着列表列表的平均时间复杂度是 O(n2)?
【问题讨论】:
n是整个矩阵的元素个数,那么它就是O(n)。
标签: list matrix time-complexity
如果n表示方阵的宽和高,那么在矩阵中进行线性搜索将花费O(n2)时间。更一般地,矩形 m×n 矩阵中的线性搜索将花费 O(mn) 时间。两者都是因为这是矩阵中的条目数,而线性搜索将为每个条目做 O(1) 的工作。
如果您使用 n 来表示矩阵中的条目总数,则时间复杂度为 O(n),原因与上述相同。
请注意,以上假设测试搜索目标需要 O(1) 时间(例如比较原始整数)。如果这是错误的,那么您应该将上述乘以相等测试的时间复杂度;例如,如果由于某种原因你有一个长度为 c 的字符串的 m×n 矩阵,那么运行时间将为 O(mnc)。
【讨论】:
嗯,你会有两个索引。所以复杂度等于两个列表,但乘以 2。也就是说,如果你想对矩阵建模,你可以考虑使用数组数组(不要与锯齿数组混淆),因为在正常情况下,矩阵具有固定大小(List<T> 是一个包装器T[] 周围允许添加和删除项目)。
【讨论】: