乐趣区

关于并行:数组索引的时间复杂度-O1-的本质是并行二分查找

上图是寻址逻辑电路,输出端 A、B 独特组成 2 bit 的地址线,2 bit 的地址线能够示意 00、01、10、11 这 4 个地址,它们别离位于输入端 Z、Y、X、W,通过地址线示意的二进制数就能够找到输入端中的不同地址(当前就能够对其进行读写操作了)

也能够这样了解:输出端 A、B 相当于两个开关,输入端 Z、Y、X、W 相当于 4 个灯泡,两个开关的不同状态的组合就能够管制其中 1 个灯泡中的亮灭。

接下来剖析繁多输出端:

输出端 A 为 1 时,会选出 输入端 X 输入端 W

输出端 A 为 0 时(通过 非门 会变成 1),会选出 输入端 Z 输入端 Y

论断:不论输出端 A 是 0 还是 1,都会选出一半

输出端 B 为 1 时,会选出 输入端 W 输入端 Y

输出端 B 为 0 时(通过 非门 会变成 1),会选出 输入端 X 输入端 Z

论断:不论输出端 B 是 0 还是 1,都会选出一半

因为只有当 与门 同时为 1 时,输入端才会输入 1。

当初,当 输出端 A 输出端 B 别离为 0、1 时,输入端 Y 就是 输出端 A、B 独特选出的地址。

上图的红线为 1(输出端 A 的 0 通过非门会将其之后的线路置为 1)

那它的工夫复杂度是怎么样的呢?

因为输出端 A、输出端 B(比方地址 01)是同时输出的,所以电路会进行 并行的二分查找,一个输出端的一次二分查找是 O(1),所有的输出端并行,进行一次二分查找同样是 O(1)。

以上是 2 bit 寻址,更多 bit 的寻址同样是并行进行的,所以工夫复杂度同样是 O(1)。

寻址的物理实质是 并行二分查找,而数组索引就是在寻址,所以这就是为什么数组的工夫复杂度是 O(1) 的起因。

下图是 3 bit 寻址逻辑电路

能够看到有 3 个输出端、8 个输入端。因为 3 bit 地址线的寻址空间大小是 \(2^3=8 \)。输出端越多,能够寻找的地址空间也就越大。

当输出端有 32 bit 时,能够寻找的地址空间有 \(2^{32}=4294967296 \) 个,它对应的内存空间是 4 GB,这也就是为什么 32 位零碎反对的最大内存是 4 GB 的起因了。

64 位零碎的寻址空间大小是 16 EB

1 EB = 1024 PB

  • https://mp.weixin.qq.com/s/Vr…
退出移动版