第二章 算法

数据结构与算法的关系?

  • 算法是数据结构的应用 关系紧密

算法:解决特定问题求解步骤的描述。在计算机中表现为指令的有限序列。

特性:

  1. 输入输出(输入绝大多有、输出一定有)
  2. 有穷性(没有死循环)
  3. 确定性(每个步骤精细、无歧义)
  4. 可行性(每一步都可行,执行有限次数完成)

设计要求:

  1. 正确性(通常对于非法输入数据能够得出满足规格说明的结果)
  2. 可读性(方便阅读、理解(拒绝shit山))
  3. 健壮性(对于非法输入处理能力)
  4. 高时间效率 低存储量(不解释)

算法效率度量方法

  1. 事后统计
  2. 事前分析(比较好 算法好坏与输入规模)
    在这里插入图片描述

函数的渐进增长

  • 输入规模n没有限制的情况下,只要超过一个数值N,这个函数就总是大于另一个函数,函数就是渐进增长的。
  • 主要关注最高阶项的阶数,因为n很大的时候,算法量指数级增长。

算法时间复杂度(算法的时间量度)

  • 语句总执行次数T(n)
  • 问题规模n
  • T(n)=O[f(n)] 随n增大 算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度。
  • f(n)是问题规模n的某个函数(n 阶数)
  • n增大,T(n)增长最慢的是最优算法
  • 写作O [ ] (大O记法)

常数阶 线型阶 平方阶
推导大O阶:

  1. 常数1取代加法常数
  2. 只保留高阶项
  3. 去除该项相乘的常数

在这里插入图片描述

最坏情况与平均情况

大多数情况,运行时间即指最坏情况运行时间,时间复杂度指最坏时间复杂度
平均情况为期望值

算法空间复杂度

定义:算法所需的存储空间
S(n)=O(f(n)),f(n)为语句关于n所占存储空间的函数
不常用,复杂度默认指时间复杂度

在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值