【问题标题】:Time Complexity of searching in unsorted matrix is linear?在未排序的矩阵中搜索的时间复杂度是线性的?
【发布时间】:2016-02-14 20:27:49
【问题描述】:

给定一个 m X n 阶矩阵。为了搜索矩阵中的某个元素,程序必须解析矩阵中的每个元素。但是,该程序仍将使用嵌套循环。嵌套循环通常意味着二次时间复杂度。

这是否意味着,搜索是二次的?

还是线性的,因为每个元素只解析一次?

【问题讨论】:

  • 输入的大小是线性的,即m * n

标签: matrix big-o time-complexity


【解决方案1】:

它(最坏的情况)是线性的,因为它最多只会查看每个元素一次。一个嵌套循环将迭代 m 次,一个将迭代 n 次,即 mn 个元素。矩阵中有 mn 个元素,因此它与矩阵中的元素数量呈线性关系。

如果有帮助,请这样想:如果 M 是方阵,它在 M 中的元素数量方面仍然是线性的,但在 M 的行(或列)的长度方面是二次的.

来自Wiki

时间复杂度通常通过计算 算法执行的基本操作,其中一个基本的 操作需要固定的时间来执行。因此量 所花费的时间和基本操作的数量 算法最多相差一个常数因子。

在这种情况下,我们通过计算循环最多可以循环多少次来计算基本操作的数量。 基本操作的数量是我们在将其与输入进行比较时关心的事情,不一定是循环的深度(尽管它是一个很好的启发式方法)

编辑: 我们在这里假设的一件大事(您的问题暗示了这一点)是元素的比较可以在恒定时间内完成。如果矩阵包含整数,那很好,但如果它包含任意长度的字符串或复杂的对象,那可能确实是另一种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2015-09-26
    相关资源
    最近更新 更多