Hello 算法 1.1.0 Dart版。而通过对数换底公式,我们可以得到具有 不同底数、相等的时间复杂度: ?(log? ?) = ?(log? ?/ log? ?) = ?(log? ?) 也就是说,底数 ? 可以在不影响复杂度的前提下转换。因此我们通常会省略底数 ? ,将对数阶直接 记为 ?(log ?) 。 6. 线性对数阶 ?(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。 图 3‑4 展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s complement)。如果我们先将原码转换为反码,并在反码下计算 1 + (−2) ,最后将结果从反码转换回原码,则可得到正确结果 −1 。 第 3 章 数据结构 hello‑algo.com 57 1 + (−2) → 0000 0001 (原码) + 1000 00100 码力 | 378 页 | 18.45 MB | 1 年前3
Hello 算法 1.0.0 Dart版。而通过对数换底公式,我们可以 得到具有不同底数、相等的时间复杂度: ?(log? ?) = ?(log? ?/ log? ?) = ?(log? ?) 也就是说,底数 ? 可以在不影响复杂度的前提下转换。因此我们通常会省略底数 ? ,将对数 阶直接记为 ?(log ?) 。 6. 线性对数阶 ?(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。 图 3‑4 展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 「原码 sign‑magnitude」虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在 原码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了「反码 1’s complement」。如果我们先将原码转换为反码,并在反码下计 算 1 + (−2) ,最后将结果从反码转换回原码,则可得到正确结果 −1 。 第 3 章 数据结构 hello‑algo.com 57 1 + (−2) → 0000 0001 (原码) + 10000 码力 | 377 页 | 17.56 MB | 1 年前3
Hello 算法 1.0.0b5 Dart版。而通过对数换底公式,我们可以 得到具有不同底数的、相等的时间复杂度: ?(log? ?) = ?(log? ?/ log? ?) = ?(log? ?) 也就是说,底数 ? 可以在不影响复杂度的前提下转换。因此我们通常会省略底数 ? ,将对数 阶直接记为 ?(log ?) 。 第 2 章 复杂度分析 hello‑algo.com 36 6. 线性对数阶 ?(? log ?) 线性对数阶常出现 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。 图 3‑4 展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 「原码 true form」虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原码下 计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 + (−2) → 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了「反码 1’s complement code」。如果我们先将原码转换为反码,并在反码 下计算 1 + (−2) ,最后将结果从反码转化回原码,则可得到正确结果 −1 。 第 3 章 数据结构 hello‑algo.com 54 1 + (−2) → 00000 码力 | 376 页 | 30.67 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Dart 版。而通过对数换底公式,我们可以得到具有 不同底数、相等的时间复杂度: ?(log? ?) = ?(log? ?/ log? ?) = ?(log? ?) 也就是说,底数 ? 可以在不影响复杂度的前提下转换。因此我们通常会省略底数 ? ,将对数阶直接 记为 ?(log ?) 。 6. 线性对数阶 ?(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。 ‧ 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加 1 。 图 3‑4 展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s complement)。如果我们先将原码转换为反码,并在反码下计算 1 + (−2) ,最后将结果从反码转换回原码,则可得到正确结果 −1 。 第 3 章 数据结构 www.hello‑algo.com 57 1 + (−2) → 0000 0001 (原码) + 10000 码力 | 378 页 | 18.46 MB | 10 月前3
共 4 条
- 1













