Mooc数据结构02 Week1

这节课讲了算法的概念:

算法(Algorithm)

  • 一个有限指令集
  • 接受一些输入(有些情况下不需要输入)
  • 产生输出
  • 一定在有限步骤之后终止
  • 每一条指令必须:

1.有充分明确的目标,不可以有歧义
2.计算机能处理的范围之内
3.描述应不依赖于任何一种计算机语言以及具体的实现手段。

空间复杂度S(n):

根据算法写成的程序在执行时 ** 占用存储单元的长度 **。这个长度往往与输入数据的 规模有关。空间复杂度过高的算法可能导致使用的 内存超限,造成程序非正常中断。

时间复杂度T(n):

根据算法写成的程序在执行时 ** 耗费时间的长度**。这个长度往往也与输入数据的规模有关。时间复杂度过高的低效算法可能导致我们 在有生之年都等不到运行结果。

  • 这张图是之前所讲的,在递归中,内存的状态图:


    Mooc数据结构02 Week1_第1张图片
    空间会随着数量的增加而增大

时间复杂度表格:

Mooc数据结构02 Week1_第2张图片
时间复杂度

一些计算时间复杂度的规则:

  • 若两段算法分别有复杂度T1(n) = O(f1(n))和T2(n) =O(f2(n)),则:

    1. T1(n) + T2(n) = max( O(f1(n)), O(f2(n)) )
    2. T1(n) * T2(n) = O( f1(n) * f2(n) )
  • 若T(n)是关于n的k阶多项式,那么T(n)=Θ(nk )
  • 一个for循环的时间复杂度等于循环次数乘以循环体代码的复杂度
  • if-else 结构的复杂度取决于if的条件判断复杂度和两个分枝部分的复杂度,总体复杂度取三者中最大。

你可能感兴趣的:(Mooc数据结构02 Week1)