给定m X n阶的矩阵。为了搜索矩阵中的某个元素,程序必须解析矩阵中的每个元素。但是,该程序仍将采用嵌套循环。嵌套循环通常意味着二次时间复杂度。
这是否意味着,搜索是二次的?
或者它是线性的,因为每个元素只被解析一次?
答案 0 :(得分:3)
它(最坏的情况)是线性的,因为它最多会查看每个元素一次。一个嵌套循环将迭代m次,一个将迭代n次,即mn个元素。矩阵中有mn个元素,因此它在矩阵中的元素数量方面是线性的。
如果有帮助,可以这样思考:如果M是方阵,则它在M中的元素数量方面仍然是线性的,但在M的行(或列)的长度方面是二次的
来自Wiki:
时间复杂度通常通过计算数量来估算 由算法执行的基本操作,其中是基本的 操作需要一定的时间来执行。因此量 所花费的时间和基本操作的数量 算法最多只是一个常数因子。
在这种情况下,我们通过计算循环最多可以循环多少次来计算基本操作的数量。 当我们将它与输入进行比较时,那些基本操作是我们关心的事情,不一定是循环的深度(尽管它是一个很好的启发式)
编辑: 我们在这里假设的一件大事(你的问题暗示的那种)是元素的比较可以在恒定的时间内完成。如果矩阵包含的整数很好,但如果它包含任意长度的字符串或者确实可能是不同情况的复杂对象。