数据结构

绪论

计算 是对象(规律,技巧)和目标(高效,低耗)

解决一些问题或进行一些计算都要进行一些相同的步骤分析条件(进行输入),解题步骤(算法),得出结论 (做出输出)。

 算法都可以被描述为若干步骤并能机械执行

子程序或子算法,一个大的程序中往往包含一些更小的程序,小的程序往往能被一些更大的程序重用。

**计算=信息处理的过程,借助某种工具,遵照一定规则,已明确而机械的形式进行

计算模型=计算机=信息处理工具

算法:特定计算模型下,旨在解决特定问题的指令序列      输入、输出、正确性、确定性、可行性、有穷性......

程序未必是算法

好算法:正确、健壮、可读、效率(速度尽可能的快;存储空间尽可能的少)

 算法+数据结构=程序(DSA)

计算模型:度量

1、引入理想、统一、分层次的尺度     2、运用该尺度,测量DSA的性能 

算法分析:正确性、成本(时间、空间)

划分等价类:实例的规模

特定问题+相同算法:最坏情况:T(n)=msx{T(P)|   |P|=n}

特定问题+相同算法:需要抽象出一个理想的平台或模型,不依赖与种种具体的因素,从而直接准确的描述和测量算法

图灵机(TM)模型:tape依次均匀的划分为单元格,字符的种类有限,head读写头,TM总是处于有限的状态每进过一个节拍可以按照规律转向另一种状态

规范~接口

RAM模型:简单操作寄存器之间的相互赋值和条件判断,转向语句

这俩个模型都是一般计算工具的简化和抽象,使我们可以独立于具体的平台,对算法的效率做出可信的比较和判断

算法的运行时间~算法需要执行的基本操作次数

执行过程可以记录为一张表,表的行数就是所执行基本指令的总条数

**大O记号(科学记号),刻度

不去关注细微末节,更关注长远和主流

渐进的分析方法,不断地将其放大


大O相较T(n)更为简洁,但依然能反映增长趋势。常数项,低次项可以忽略

大Ω记号可以构成T(n)的下界

高效解  常数  O(1)    不含转向(循环、调用、递归等),必是顺序执行   ;对数 O (log n)

有效解   多项式复杂度O(n的c次方)

难解    指数  O(2的n次方)

**算法分析 去粗取精

俩个主要任务正确性(不变性*单调性)+复杂度

分析复杂度的主要方法:迭代(级数求和)递归(递归跟踪+递归方程)  猜测+验证

级数

算术级数与末项平方同阶

幂方级数 比幂次方高出一阶

几何级数(底数>1)与末项同阶(等比数列)

收敛级数  O(1)


循环

封底估算:定量的分析算法的复杂度


迭代和递归

 减而治之:为求解一个大规模的问题,可以将其划分为俩个子问题:其一平凡,另一规模缩减分别求解子问题,由子问题的解得到原问题的解

递归跟踪:分析检查每个递归实例,累计所需时间(调用语  句本身,计入对应的子实例)其总和即算法执行时间                 

递归方程: 为求解规模为n的问题,需递归求解规模为(n-1)的问题。     递归基 


分而治之:为求解一个大规模的问题,可以将其划分为若干子问题,规模大体相当,分别求解子问题。由子问题的解,得到原问题的解

   动态规划:make it  work,    make it right,     make it fast  消除重复计算,提高效率

  


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值