数据结构与算法-算法和算法分析

本文探讨了算法的基本特性,包括有穷性、确定性、可行性、输入和输出。接着阐述了算法设计应具备的正确性、可读性和健壮性,并强调了效率的重要性。在算法分析部分,介绍了如何衡量时间效率和空间效率,特别是时间复杂度的渐进分析方法。通过计算语句频度和使用O记号来表达算法的时间复杂度。同时,也提到了空间复杂度的概念,它是算法所需存储空间的度量。整体上,文章旨在帮助读者理解和评估算法的性能。
摘要由CSDN通过智能技术生成

算法特性

  • 有穷性:在执行有穷步实现 并在有穷时间内完成
  • 确定性:每一条指令都有确切含义
  • 可行性:算法是可执行的
  • 输入:一个算法有零个或多个输入
  • 输出:一个算法有一个或多个输出

算法设计的要求

  • 正确性:程序对于精心选择、典型的、苛刻且带有刁难性的几组数据能够输出满意结果
  • 可读性:易于人的理解
  • 健壮性(鲁棒性):输入非法数据时 算法恰当作出反应或进行相应处理
  • 高效性:要求花费尽量少的时间

算法分析

通过算法效率来评判不同算法的优劣程度

算法效率的影响因素

  1. 时间效率:算法所耗费的时间
  2. 空间效率:所耗费的存储空间

算法时间效率的度量

度量方法

  • 事后统计:将算法实现 测算其空间和时间开销
  • 事前分析:对算法所消耗资源的一种估算(常用

事前分析方法

算法运行时间=一个简单操作所用的时间 * 简单操作次数
算法运行时间=每条语句频度 * 该语句执行一次所需时间

:一般将执行一次所需的时间计为单位时间 所以只看语句频度

  • 为了便于比较时间效率 我们仅比较它的数量级
  • 若有某个辅助函数f(n),使当n趋于无穷大时 T(n)/F(n)的极限值为不等于0的常数,则称为F(n)是T(n)的同数量级函数 计作T(n)=O(F(n)),称为O(F(n))为算法的渐进时间复杂度O是数量级的符号)简称时间复杂度

算法时间复杂度

  • 算法中基本语句重复执行的次数问题规模n的都个函数 算法的时间量度计作:T(n)=O(f(n))
    基本语句:算法中执行次数最多的 对算法运行时间贡献最大的
    n越大 算法的执行时间越长

分析算法时间复杂度的方法

  1. 找出语句频度最大的语句作为基本语句
  2. 计算基本语句的频度得到问题规模n的某个函数F(n)
  3. 取其数量级用符号“O”表示

渐进空间复杂度

  • 空间复杂度:算法所存储空间的度量 计作S(n)=O(f(n)) n为问题的规模(大小
    1.算法占据的空间:算法本身占据的空间 输入/输出 指令 常数 变量
    2.算法要使用的辅助空间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值