算法学习笔记

184 阅读1分钟

了解几个必须的概念:

1.算法:由控制结构(循环、分支、顺序)和原操作(固有数据的操作)构成的,算法时间取决于两者的综合效果


2.时间频度:一个算法中的语句执行次数被称为时间频度,记为T(n)

3.时间复杂度:
       1)为什么提出————为描述时间频度 T(n)随着问题规模 n 改变而产生的变化规律

       2)基本概念————若T(n)/f(n)=C(C不等于0),则称T(n)=O(f(n))为算法的(渐进)时间复杂度

4.如何确定f(n)=A*X(n)+B*Y(n)+C*n
       1)找出嵌套循环中最内层循环————确定最高次项的幂级

      2)找出嵌套循环的层数————确定f(n)的项数     (其实感觉没必要)

      3)列式简略计算下,确定f(n),把所有基准系数变为1,只留下最高次项

常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)

理解    求和法则    乘法法则

1) Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。

2) Ο(log2n)、Ο(n)、 Ο(nlog2n)、Ο(n2)和Ο(n3)称为多项式时间,有效算法,多项式问题

3) Ο(2n)和Ο(n!)称为指数时间,非确定多项式问题

学习链接:https://blog.csdn.net/zolalad/article/details/11848739