数据结构和算法

数据结构和算法(第三次课)

算法和算法分析

  • 最坏时间复杂度:最坏时间的时间复杂度;
  • 平均时间复杂度:所有可能输入实例在等概率出现的情况下,算法的期望运行时间;
  • 最好时间复杂度:最好情况下,算法的时间复杂度;

一般总是考虑最好时间复杂度

  • 这样能保证算法的运行时间不会比它更长
  1. 加法规则
  2. 乘法规则

算法的复杂度比较

常熟阶<对数阶<线性阶<线性对数阶<平方阶<立方阶<…<k次方阶<指数阶

算法要占据的空间(空间复杂度)

  • 算法本身要占据的空间,输入/输出,指令,常数,变量等
  • 算法要使用的辅助空间
    例子(将一位数组a中的n个数逆序存放到原数组中):
    for(i=0;i<n/2;i++){
        t = a[i];
        a[i]=a[n-i-1];
        a[n-i-1]=t;
    } //原地工作
    
    //对比:
    for(i=0;i<n;i++){
        b[i]=a[n-i-1];
    }
    for(i=0;i<n;i++){
        a[i]=b[i];    
    }//S(n)=O(n)

设计好算法的过程

  • 抽象数据类型 = 数据的逻辑结构+抽象运算(运算的功能描述)
posted @ 2022-07-27 10:25  jerry-autumn  阅读(41)  评论(0)    收藏  举报