数据结构随笔——算法

所看算法课程视频

1. 什么是算法?

  • 一个有限指令集
  • 接受一些输入(有些情况下不需要输入)
  • 产生输出
  • 一定在有限步骤之后终止
  • 每一条指令必须
    1.有充分明确的目标,不可以有歧义
    2.计算机能处理的范围之内
    3.描述应不依赖于任何一种计算机语言以及具体的实现
    手段

2.什么是时间空间复杂度?

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

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

3.复杂度的渐进表示法

T(n) = O(f(n)) 表示存在常数C >0, n0>0 使得当n>=n0 时有T(n) <=C·f(n)

T(n) = Ω(g(n)) 表示存在常数C >0, n0>0 使得当n>=n0 时有T(n) >=C·g(n)

T(n) = Θ(h(n)) 表示同时有T(n) = O(h(n))和T(n) = Ω(h(n))

4.复杂度分析小窍门

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

猜你喜欢

转载自blog.csdn.net/ben1122334/article/details/84672462