学习笔记——数据结构(WEEK 2-1)

算法与算法分析

算法

定义

对特定问题解决方法和步骤的一种描述,指令的有限序列。

描述
  • 自然语言

  • 流程图

  • 传统流程图
    NS流程图

  • 伪代码,类语言

  • 程序语言(一个问题可以有多种算法–考虑如何将输入转化成输出–程序使某种程序设计语言对算法的基本实现–程序=数据结构+算法)

特性
  • 有穷性
  • 确定性
  • 可行性
  • 输入(0或多个)
  • 输出(1或多个)
设计要求
  • 正确性

在这里插入图片描述

  • 可读性
    在这里插入图片描述
  • 健壮性(鲁棒)
    在这里插入图片描述
  • 高效性
    在这里插入图片描述

算法分析

算法的效率
  • 时间效率
  • 空间效率
    上述可能使冲突
时间效率
  • 定义:程序在计算机执行消耗的时间
  • 度量方法:
    1. 事后统计
      算法实现,测试时间和空间开销
    2. 事前分析
      估算

算法运算时间=一个简单操作(幅值,比较,移动等)所需要的时间*简单操作次数

在这里插入图片描述
矩阵乘法:

 int n = 4;
    int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    int b[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    int c[4][4];
    int i,j,k;
    for (i=1;i<=n;i++){     // 执行(n+1)次,最后一次会执行判断
    // 接下来的代码块会执行n次
        for(j=1;j<=n;j++){   // 执行n(n+1)次,最后一次会执行判断
                c[i][j]=0;       // 执行n*n次
                for (k=0;k<n;k++){     // 执行n*n(n+1)次,最后一次会执行判断
                    c[i][j]=c[i][j]+a[i][k]*b[k][j];     // 执行n*n*n次
                }
        }
    }

将所有执行时间相加得到时间消耗T(n)
简化:仅比较数量级–时间复杂度
在这里插入图片描述
在这里插入图片描述

上述求解矩阵乘法时间复杂度
在这里插入图片描述
在这里插入图片描述
n越大执行时间越长
在这里插入图片描述

基本方法

定理1:
在这里插入图片描述
在这里插入图片描述
时间复杂度是由嵌套最深语句的频度决定的
举例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时间复杂度基本概念

最坏时间复杂度
平均时间复杂度
最好时间复杂度
在这里插入图片描述
对于复杂时间复杂度:
分解再根据大O加法乘法法则计算
在这里插入图片描述

时间复杂度比较

在这里插入图片描述

空间效率

空间复杂度
在这里插入图片描述
在这里插入图片描述
举例:
在这里插入图片描述

总结(week1+week2-1)

设计好算法:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值