【问题标题】:Time complexity for searching a list of lists?搜索列表列表的时间复杂度?
【发布时间】:2020-03-12 12:45:09
【问题描述】:

假设我将矩阵存储为列表列表,其中第一个列表表示行,该列表中的每个元素都是表示该行中值的列表。查找元素的时间复杂度是多少?

如果我没记错的话,使用线性搜索在列表中查找元素的平均时间复杂度是 O(n),这是否意味着列表列表的平均时间复杂度是 O(n2)?

【问题讨论】:

  • 如果n是整个矩阵的元素个数,那么它就是O(n)。

标签: list matrix time-complexity


【解决方案1】:

如果n表示方阵的宽和高,那么在矩阵中进行线性搜索将花费O(n2)时间。更一般地,矩形 m×n 矩阵中的线性搜索将花费 O(mn) 时间。两者都是因为这是矩阵中的条目数,而线性搜索将为每个条目做 O(1) 的工作。

如果您使用 n 来表示矩阵中的条目总数,则时间复杂度为 O(n),原因与上述相同。

请注意,以上假设测试搜索目标需要 O(1) 时间(例如比较原始整数)。如果这是错误的,那么您应该将上述乘以相等测试的时间复杂度;例如,如果由于某种原因你有一个长度为 c 的字符串的 m×n 矩阵,那么运行时间将为 O(mnc)。

【讨论】:

    【解决方案2】:

    嗯,你会有两个索引。所以复杂度等于两个列表,但乘以 2。也就是说,如果你想对矩阵建模,你可以考虑使用数组数组(不要与锯齿数组混淆),因为在正常情况下,矩阵具有固定大小(List<T> 是一个包装器T[] 周围允许添加和删除项目)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 2018-08-23
      • 2019-07-02
      • 1970-01-01
      • 2012-05-21
      • 2015-03-15
      • 2017-01-13
      相关资源
      最近更新 更多