浙大数据结构 总结二

浙大数据结构 总结二

算法定义

  • 一个有限指令集

  • 接受一些输入

  • 产生输出

  • 一定在有限步骤之后终止

  • 每一条指令必须:

  • 有充分明确的目标,不可以有歧义

  • 计算机能处理的范围之内

  • 描述应不依赖于人任何一种计算机语言以及具体的实现手段

什么是好算法

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

例:总结一中的递归算法的空间复杂度:S(n)=cn

循环算法的空间复杂度为1

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

例:总结一中的一般算法的时间复杂度:

巧妙算法的时间复杂度:

分析算法的效率时,经常关注下面两种复杂度:

  • 最坏情况复杂度

  • 平均复杂度

一般主要考虑最坏复杂度

复杂度的渐进表示法

时间和空间通用

T(n)=O(f(n))表示存在常数C>0,n0>0使得当n>n0时有T(n)<=Cf(n),即f(n)为T(n)的上界

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

T(n) = Θ(h(n)) 表示同时有T(n) = O(h(n)) 和 T(n) = Ω(h(n)) ,即h(n)既是上界也是下界

输入n的规模后复杂度的增长:

复杂度分析方法:

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

    T 1(n) + T2(n) = max( O(f1(n)), O(f2(n)) )

    T 1(n) *T2(n) = O( f1(n) * f2(n) )

  • 若T(n)是关于n的k阶多项式,那么T(n)=Θ(n^k)

  • 一个for循环的时间复杂度等于循环次数乘以循环体代码的复杂度

  • if-else 结构的复杂度取决于if的条件判断复杂度 和两个分枝部分的复杂度,总体复杂度取三者中最大 \

猜你喜欢

转载自blog.csdn.net/zhangxiafll/article/details/82178268
今日推荐