数据结构学习笔记-day2

Day2

一、算法和算法分析

  1. 算法特性:有穷性、确定性、可行性、输入、输出。

2.算法的时间复杂度:(影响算法时间代价的最主要因素是问题规模)

                问题规模:是算法求解问题输入量的大小,是问题的本质表示,一般用n

代表。

     算法执行时间=所有(语句频度*语句执行时间)的总和

     语句频度:一条语句重复执行的次数。

3.算法的时间复杂度定义(用基本语句执行次数来度量算法工作)

    基本语句:指的是算法中重复执行次数和算法时间成正比的语句。

 

一般情况下,算法中基本语句重复执行次数是问题规模n的某个函数f(n),算法的时间量度记作:

                       T(n)=O(f(n))

它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称做算法的渐进时间复杂度,简称时间复杂度。

           

数学符号O定义为:若T(n)和f(n)是定义在整数合集上的两个函数,则T(n)=O(f(n))表示存在正的常数C和n0,使得当n>=n0时都满足0<=T(n)<=Cf(n)。

4.算法的时间复杂度分析举例

   △找出所有语句中语句频度最大的那条语句作为基本语句,计算其语句频度得到f(n),取其数量级用符号“O”表示。

 

定理1:若f(n)=amn^m+a(m-1)n^(m-1)+……+a1n+a0是一个m次多项式,则T(n)=O(n^m)。

 

 

例1.

     {x++;s=0;}

两语句频度均为1,算法执行时间是与问题规模n无关的常数,所以算法的时间复杂度为T(n)=O(1),称为常量阶。

若算法执行时间不随问题规模n的增加而增长,算法语句频度就是某个常数,即使这个常数再大,算法的时间复杂度都为O(1).

 

 

           例2.

               For(i=0;i<=10000;i++){x++;s=0;}

               两基本语句的频度均为f(n)=n,所以T(n)=O(n)。(线性阶)

 

 

           例3.

               x=0;y=0;

               for(k=1;k<=n;k++)

                    x++;

               for(i=1;i<=n;i++)

                   for(j=1;j<=n;j++)

                      y++;

               频度最大语句y++语句频度为f(n)=n^2,所以T(n)=O(n^2)。(平方阶)

 

 

           例4.

                x=1;

                for(i=1;i<=n;i++)

                    for(j=1;j<=i;j++)

                        for(k=1;k<=j;k++)

                            x++;

                时间复杂度T(n)=O(n^3)。(立方阶)

 

 

          例5.

              for(i=1;i<=n;i=i*2){x++;s=0;}

              有2^f(n)<=n,则f(n)<=log2n,所以T(n)=O(log2n)。(对数阶)

 

 

         △常见时间复杂度按数量级递增排列:

           常量阶O(1)<对数阶O(log2n)<线性阶O(n)<线性对数阶O(nlog2n)<平方阶O(n^2)<立方阶O(n^3)<………k次方阶O(n^k)<指数阶O(2^n)

 

          随着n的增长,T(n)增长较缓慢的算法为较优算法。

      

  1. 某些算法其基本语句的频度不仅仅与问题规模n有关,还依赖于其他因素。

最好情况下的时间复杂度为最好时间复杂度;

最坏情况下的时间复杂度为最坏时间复杂度;

算法的平均时间复杂度为算法所有情况下算法计算量的加权平均值。

  1. 算法的空间复杂度

渐进空间复杂度:作为算法所需存储空间的量度,简称空间复杂度,也是问题规模n的函数,记:

                   S(n)=O(f(n))

分析算法实现所需的辅助空间即可,若辅助空间相对于输入数据而言是个常量,则称这个算法原地工作,辅助空间为O(1)。

 

详例见书本

posted @ 2023-03-11 15:46  k4fk4  阅读(61)  评论(0编辑  收藏  举报