【问题标题】:Calculating Time complexity for a transpose matrix计算转置矩阵的时间复杂度
【发布时间】:2019-08-24 07:56:13
【问题描述】:

该代码是尝试转置矩阵的一段代码的汇总版本。我的任务是找出这个程序的时间复杂度。

我只对发生交换次数的时间复杂度感兴趣。我发现在交换的外循环上它发生 n-1 次,而对于内循环它发生 (n^2 -n)/2 次。


我通过 subst n 和一个数字推导出这些解决方案。

  • 当 n=4 时,我的内循环会循环 1+2+3 次
  • 当 n=5 时,我的内循环会循环 1+2+3+4 次
  • 因此内循环=(n^2 - n) / 2

我将如何计算这段代码的时间复杂度?


我在网上的某个地方看到这个人只是从他的内循环计数中获取值并确定它是 O(n) 复杂度。


[编辑] 我是否也需要考虑其他循环来计算时间复杂度?

【问题讨论】:

    标签: algorithm time-complexity


    【解决方案1】:

    您的交换算法是一个明确的(1+2+3+...n) 情况,translates to n×(n+1)/2。

    由于计算的常数和低阶部分不计入大 O 表示法,因此转换为 O(n^2)

    考虑其他循环,不会改变您的时间复杂度,因为它们也是 O(n^2)。就大 O 而言,写O(3(n^2)) 没有意义,因为常量被丢弃了。

    但是在这里可以帮助您的是,您无需为更复杂的 swap for 循环而烦恼。 (我不是指你在学习的时候。我是说,当你处理现实世界的问题时。)

    附带说明,我建议阅读 Cracking the Coding Interview (6th edition) (2015) 中 Big O 部分的 example 3 strong> by - McDowell, Gayle,解决了这种确切的情况以及许多类似的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2018-03-30
      • 2021-03-03
      • 1970-01-01
      相关资源
      最近更新 更多