diff --git a/chapter_computational_complexity/summary/index.html b/chapter_computational_complexity/summary/index.html index 3ab44a5b2..5b6bda8cd 100644 --- a/chapter_computational_complexity/summary/index.html +++ b/chapter_computational_complexity/summary/index.html @@ -514,10 +514,41 @@ + + 2.4.   小结 + + + + @@ -1809,6 +1840,21 @@ + + + @@ -1853,6 +1899,22 @@
  • 我们通常只关注最差空间复杂度,即统计算法在最差输入数据和最差运行时间点下的空间复杂度。
  • 常见空间复杂度从小到大排列有 \(O(1)\) , \(O(\log n)\) , \(O(n)\) , \(O(n^2)\) , \(O(2^n)\) 等。
  • +

    2.4.1.   Q & A

    +
    +

    尾递归的空间复杂度是 \(O(1)\) 吗?

    +

    理论上,尾递归函数的空间复杂度可以被优化至 \(O(1)\) 。不过绝大多数编程语言(例如 Java, Python, C++, Go, C# 等) +都不支持自动优化尾递归,因此一般来说空间复杂度是 \(O(n)\)

    +
    +
    +

    函数和方法这两个术语的区别是什么?

    +

    函数(function)可以独立被执行,所有参数都以显式传递。 +方法(method)与一个对象关联,方法被隐式传递给调用它的对象,方法能够对类的实例中包含的数据进行操作。

    +
    +
    +

    图片“空间复杂度的常见类型”反映的是否是占用空间的绝对大小?

    +

    不是,该图片展示的是空间复杂度(即增长趋势),而不是占用空间的绝对大小。每个曲线都包含一个常数项,用来把所有曲线的取值范围压缩到一个视觉舒适的范围内。 +实际中,因为我们通常不知道每个方法的“常数项”复杂度是多少,所以一般无法仅凭复杂度来选择 $n = 8 之下的最优解法;但相对地 \(n = 8^5\) 就很好选了,这是复杂度占主导的情况。

    +
    diff --git a/chapter_data_structure/summary/index.html b/chapter_data_structure/summary/index.html index f53708d01..df02f092c 100644 --- a/chapter_data_structure/summary/index.html +++ b/chapter_data_structure/summary/index.html @@ -658,35 +658,8 @@