数据结构与算法笔记 —— 绪论

本文是关于数据结构与算法的笔记,涵盖了计算模型、图灵机、RAM模型、数据结构、大O记号、算法分析、迭代与递归以及动态规划。强调了算法的正确性、效率和复杂度分析,特别是大O记号在表示算法时间消耗上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构与算法笔记 —— 绪论


一. 计算与算法

  1. 计算机的本质是计算,计算是寻找对象的规律,并从中找到技巧。计算的目标是高效,低耗。
  2. 算法就是借助一定的工具,在一定的规则下,以明确而机械的形式来进行的计算。
  3. 算法的主要特性:
    • 输入,输出
    • 正确性:算法能够正确地解决问题
    • 确定性:所有步骤均由基本的操作组成
    • 可行性:基本操作均能够实现
    • 有穷性:所有操作在时间的允许范围内
  4. 好的算法:效率最高(速度尽可能快,存储空间尽可能少)同时又兼顾正确(算法能够正确地解决问题)、健壮(容错性好)、可读(易于阅读)。

二. 计算模型

  1. 一个好的程序不仅要考虑数据结构与算法,还要考虑效率,即:(数据结构+算法)*效率 = 程序 => 应用。
  2. 算法分析的两个重要指标
    • 正确性:算法功能是否与问题一致
    • 成本:时间消耗与存储空间消耗
  3. 定义:T(n) 为一个算法在最坏的情况下所需要操作的步骤。不同算法之间的好坏主要看T(n)的大小,T(n)是屏蔽了计算机硬件差异,语言差异,编译差异等差异之后的理想平台下的运行指标,如大O,大Ω,大Θ等。
  4. 一般的计算模型有图灵模型与RAM模型,它们均将算法的运算时间转换成算法执行的基本操作次数。

三. 图灵机模型

  1. 图灵机的三个组成要件
    • 有限长的字母表: cell中存储的内容
    • 读写头:指示当前位置,可读可写。
    • 状态表:当前读写头的状态
  2. 图灵机状态转换过程 transform(q,c;f,L/R,p)
    • q:当前状态
    • c:读写头所指cell当前的内容
    • f:读写头所指cell改写的内容
    • L/R:向左/右移位
    • p:读写头转换后的状态

四. RAM 模型

  1. 与图灵机类似,均假设有无限空间
  2. 由一系列顺序编号寄存器组成,但总数无限
  3. 算法所运行的时间转换成算法运算时的次数

五. 数据结构

  1. 数据结构示意图

    • 数据对象由数据元素组成,数据元素由数据项组成,数据项是最基本的单位
    • 数据结构是一系列数据元素之间的关系
  2. 数据结构的逻辑结构

    • 集合结构
    • 线性结构
    • 树结构
    • 图结构
  3. 数据结构的物理结构
    • 顺序存储结构
    • 链式存储结构

六. 大O记号等

  1. 算法的效率主要看时间消耗与存储空间消耗,这里我们屏蔽存储空间的消耗,仅仅考虑时间的消耗。
  2. 大O的定义:T(n)=O(f(n)) ,f(n)为一个函数。当c>0,T(n)<cf(n),即大O记号表示T(n)的一个上界,其性质为:
    • O(n)=O(cn)
    • O(n2+n)=O(n2)
  3. Ω的定义:T(n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值