【问题标题】:what size do we consider the pointer of 2d array in space complexity?我们认为二维数组的指针在空间复杂度中的大小是多少?
【发布时间】:2018-08-28 11:55:57
【问题描述】:

这是我的算法书中给出的代码。我们需要计算它的空间复杂度。

这是给出的答案-

空间复杂度S=C+Sp,在这种情况下Sp为零,因为代码独立于n。 但我想计算代码的 C 部分,在这种情况下,考虑到 a,x,n,0 and -1.,它将是 5*2bytes=10 bytes

所以我的问题是,如果 a 是 2d 矩阵,C 将是什么,我们是否将其视为 2 bytes 仅在 1d 数组的情况下,还是将其视为 4 个字节?

【问题讨论】:

  • 0 是一个不太常见的答案,我会说 O(1)。
  • 这不是渐近符号
  • 首先,它是渐近符号(传说中的 Big-O)。其次,我认为您不必使用 4 个字节,因为只有在您从 32 位系统切换到 64 位系统时才会改变。
  • @NitinPawar 我们使用二维数组所需的空间是一维数组的两倍还是相同?
  • 没关系。常数因素与渐近复杂度无关 - 1 位和 1 TB 会给您相同的答案。

标签: arrays algorithm asymptotic-complexity


【解决方案1】:

自八十年代中期以来,指针和整数不再是 16 位,所以我想知道你的 2 个字节是什么意思。

另外请注意,您对空间的计算有点奇怪。你不计算变量 i,但你计算文字常量,它们通常在汇编代码中显示为直接参数。

无论如何,在 32 位机器上,所有地址(和指针)都用 4 个字节表示,数组维度的额外计算由编译器执行并硬编码到程序集中。

在 64 位机器上,每个指针计算 8 个字节,每个 int 计算 4 个字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多