绪论-算法【数据结构与算法】

    文章主要是对于数据结构与算法课程学习的读书记录。欢迎学习交流。

    [内容范围]第一章绪论 -算法

文章目录

    • 算法用途
    • 算法是满足下列性质的指令序列
    • 计算机问题求解5步骤
    • 算法复杂度分析
    • 时间复杂度具体计算
    • 规定最坏、最好、平均时间复杂度目的
    • [回顾]算法复杂度分析流程图
    • 渐进表达式的引入(替代计算步的准确计算)
    • 渐进分析的符号
  • 总结

算法用途

设计并实现一种用计算机来解决问题的方法。

算法是满足下列性质的指令序列

  • 输 入:有零个或多个外部量作为算法的输入。
  • 输 出:算法产生至少一个量作为输出。
  • 确定性:组成算法的每条指令清晰、无歧义。
  • 有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。

计算机问题求解5步骤

  • 问题的理解:清楚问题的输入、要求和输出;
  • 数据结构设计:一方面要选择或设计能有效表示和存储应用问题中所涉及的数据
    对象的数据结构,同时还要选择或设计能支持算法策略实现的数据结构;
  • 算法设计:包括选择算法策略、用适当的方式描述和逐步细化算法步骤;
  • 算法分析:发现有改进完善之处,返回第二步,重新选择或设计数据结构、重新
    设计算法;
  • 程序实现:用某种计算机程序设计语言,定义数据结构、编写实现算法的代码
  • 绪论-算法【数据结构与算法】_第1张图片

算法复杂度分析

    算法复杂性是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂性,需要的空间资源的量称为空间复杂性
    这个量应该只依赖于算法要解的问题的规模算法的输入算法本身的函数
    如果分别用N、I和A表示算法要解问题的规模、算法的输入和算法本身,而且用C表示复杂性,那么,应该有C=F(N,I,A)。一般把时间复杂性和空间复杂性分开,并分别用T和S来表示,则有: T=T(N,I)和S=S(N,I) 。

时间复杂度具体计算

由于空间复杂度很难去考虑,通常我们考虑了时间复杂度。公式如下:总而言之就是计算各个元运算的个数×各自的时间的一个汇总。

元运算就是语句(也叫做计算步),翻译完就是不同语句的个数×各自执行的时间。
绪论-算法【数据结构与算法】_第2张图片
绪论-算法【数据结构与算法】_第3张图片
具体描述绪论-算法【数据结构与算法】_第4张图片
例子如下
绪论-算法【数据结构与算法】_第5张图片

规定最坏、最好、平均时间复杂度目的

首先明确N是问题的规模,L是算法的输入。分成三种情况是为了在算法时间复杂度的分析中,我们可以有三种结果(对应三种L)用于比较,避免了不同算法用不同的L产生不同的结果对我们分析对比好坏的影响。
绪论-算法【数据结构与算法】_第6张图片

问题的规模
算法的输入

[回顾]算法复杂度分析流程图

绪论-算法【数据结构与算法】_第7张图片

渐进表达式的引入(替代计算步的准确计算)

不难发现对于实际问题,有时候很难去比较时间复杂度,所以引入渐进表达。
绪论-算法【数据结构与算法】_第8张图片
渐进性态的表达绪论-算法【数据结构与算法】_第9张图片
简单例子如下绪论-算法【数据结构与算法】_第10张图片

渐进分析的符号

绪论-算法【数据结构与算法】_第11张图片
绪论-算法【数据结构与算法】_第12张图片
记忆如下(重要)绪论-算法【数据结构与算法】_第13张图片
绪论-算法【数据结构与算法】_第14张图片

总结

如果有错误可以评论私信。

在这里插入图片描述

你可能感兴趣的:(数据结构与算法,数据结构,c++,学习笔记)