数据结构与算法 基础概述 入门必备!

2023-11-04

一、数据的逻辑结构
(1)集合结构
结构中的数据元素之间除了同属于一个集合的关系外,再无任何其它关系。

(2)线性结构
结构中的数据元素之间存在着一对一的线性关系。

(3)树形结构
结构中的数据元素之间存在着一对多的层次关系。

(4)图状结构
结构中的数据元素之间存在着多对多的任意关系。

二、数据的存储结构
(1)顺序映像—>顺序存储
借助存储其中相对位置来表示数据元素之间的逻辑关系(与数组相似)

(2)非顺序映像—>链式存储
借助指针表示数据元素之间的逻辑关系(与链表相似)

逻辑结构与存储结构的关系为:存储结构是逻辑关系的映像与元素本身的映像,是数据结构的实现,逻辑结构是数据结构的抽象。

三、算法的概念

 数据结构+算法=程序

1.有穷性
对于任意一组合法的输入值,在执行有穷步骤之后一定能结束,即算法中的每一个步骤都能在有限的时间内完成。

2.确定性
算法的每一步必须是确切定义的,使算法的执行者或阅读者都能够明确其含义及如何执行,并且在任何条件下,算法都只有一条执行路径。

3.可行性
算法应该是可行的,算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现。

4.有输入
一个算法应该有零个或者多个输入,他们是算法所需的除湿量或被加工的对象的表示。有些输入量需要在算法执行过程中输入,而有的算法表面上可以没有输入,实际上已被嵌入算法之中。

5.有输出
一个算法应该有一个或者多个输出,它是一组与输入有确定关系的量值,是算法进行信息加工后的结果,这种确定关系即为算法的功能。

四、算法的评价标准
1.正确性
正确性指算法能满足具体问题的要求,即对任何合法的输入,算法都会得出正确的结果。

2.可读性
可读性指算法被理解的难易程度。算法主要是为了人阅读与交流,其次才是为了计算机执行,因此算法应该更易于人的理解。另一方面,晦涩难读的程序易于隐藏较多错误而难以调试。

3.健壮性
健壮性又称鲁棒性,即对非法输入的抵抗能力。当输入数据非法时,算法应当恰当地做出反应或者进行相应处理,而不是产生奇怪的输出结果。并且,处理出错的方法不应是中断程序的执行,而应是返回一个表示错误或者错误性质的值,以便在更高抽象层次上进行处理。

4.高效率与低存储量需求
效率通常指的是算法的执行时间;存储量指的是算法在执行过程中所需的最大存储空间,两者都与问题的规模有关。尽管计算机的运行速度提高很快,但是这种提高无法满足问题规模加大带来的速度要求。所以追求高速算法仍然是必要的。相比起来,人们会更多滴关注算法的效率,但这并不因为计算机的存储空间是海量的,而是由人们面临的问题的本质决定的。二者往往是一对矛盾,常常可以用空间换时间,时间换空间。

五、算法性能分析
算法效率的度量,是评价算法优劣的重要依据。一个算法的复杂性高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说这个算法的复杂性更高;反之,所需的资源越低,则该算法的复杂性越低。最重要的计算机资源是时间和空间资源。因此,算法的复杂性有时间复杂性和空间复杂性之分。

(1)时间复杂度
一般情况下,算法中基本操作重复执行的次数是问题规模n某个函数f(n),算法的时间度量记作T(n) = O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的时间复杂度。

语句频度:
语句频度是指该语句在一个算法中重复执行的次数。

eg:
(1)x =x+1//时间复杂度为O(1),称为常量阶。
(2)for(i =1;i<=n;i++) x=x+1//时间复杂度为O(n),称为线性阶。
(3)

for(i =1;i<=n;i++) 
         for(j =1;j<=n;j++)
             x=x+1//时间复杂度为O(n方),称为平方阶。

随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率不断下降。

(2)空间复杂度
与时间复杂度相似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作:

S(n)=O(f(n))

算法在执行期间所需要的存储空间包括三个部分:
(1)算法程序所占的空间

(2)输入的初始数据所占的存储空间

(3)算法执行过程中所需要的额外空间

若输入数据所占空间之取决于问题本身,和算法无关,则只需要分析除输入和程序之外的辅助变量所占的额外空间

若所需额外空间相对于输入数据量来说是常数,则称此算法为原地工作。

若所需存储量依赖于特定的输入,则通常按最坏的情况考虑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构与算法 基础概述 入门必备! 的相关文章

  • 1. Qt小游戏 --- 推箱子

    1 说明 这个小游戏主要使用Qt中的绘制事件函数 paintEvent 在画布上面不停的绘制图形 并使用定时器做时间上的触发处理 这个小游戏只是做了简单的逻辑处理 具体复杂的功能读者可自行发挥 效果展示如下 Qt制作推箱子小游戏 2 相关代

随机推荐

  • 正负压产生电路(9V,12V)

    正负压输出电路 开关电源知识储备 xl6007 电荷泵 原理图和PCB 开关电源知识储备 在dc dc拓扑中有着buck 降压 boost 升压 buck boost 升降压 其原理简单总结是 利用储能元件 如电容电感 对电流的释放进行控制
  • vue3.0--使用element-plus的$message

    前题已经按如上步骤安装了按需加载的element plus 项目中使用this message 使用成功了 import ElMessage from element plus components ElMessage ElMessage
  • Error setting null for parameter #2 with JdbcType OTHER

    mybatis执行时报错内容如下 Error setting null for parameter 2 with JdbcType OTHER Try setting a different JdbcType for this parame
  • atcoder ABC 128

    目录 B guidebook c switches D equeue B guidebook B Guidebook atcoder jp 多关键字排序 按主要关键字 次要关键字排序 用结构体存储主次要关键字 用sort排序 sort可以对
  • squid 高匿配置 用户名密码配置

    1 安装squidyum install squid2 修改配置文件 在 http access deny all 上面加上如下权限配置 注意 一定要在这句上面 用户名密码配置 auth param basic program usr li
  • openGL之API学习(五)光照

    基本的光照模型主要包括 环境光 漫反射 镜面反射 环境光是在晴天室外到处看到的光的类型 环境光也就被建模为一个没有光源 没有方向并且对场景中的所有物体产生相同的点亮效果的一种光 环境光在很多情况下会被尽量的避免去考虑 因为它看上去有点太人工
  • PlacingObjectsontheGlobe_译

    PlacingObjectsontheGlobe 译 已经创建了一个关卡并且输入一些像CesiumWorldTerrain或者一个城市的摄影测量模型真实世界资产 接下来你可能想要从标准UnrealEngine工具箱添加一些对象 格网 植物
  • 对Spring loC DI的理解

    文章转自https www cnblogs com Mr Rocker p 7721824 html 仅供个人学习所用 好东西当然要多多学习啊 学习过Spring框架的人一定都会听过Spring的IoC 控制反转 DI 依赖注入 这两个概念
  • 如何编写一个可变参数函数?如何让所有单片机的所有串口实现printf函数?

    前言 1 由于真的复习不下去 就想着写一篇博客拉回自己的心思 于是想到了长期有疑惑 但是一直没有进行深入了解的C语言可变参数函数 2 本人查阅了一些网上的资料 以及自己的理解写出来了这一片博客 首先再次感谢肯哥的答疑 3 借鉴文章 C51单
  • [Android] 通过Menu实现图片怀旧、浮雕、模糊、光照和素描效果

    由于随手拍项目想做成类似于美图秀秀那种底部有一排Menu实现不同效果的功能 这里先简单介绍如何通过Menu实现打开相册中的图片 怀旧效果 浮雕效果 光照效果和素描效果 后面可能会讲述如何通过PopupWindow实现自定义的Menu效果 希
  • 关于startup启动找不到相应文件问题-ORA-01078: failure in processing system parameters

    Oracle启动的三种方式 startup nomount 非安装启动 读取init org 主要用于检查实例 startup mount 安装启动 startup open 打开 依次顺序为 open gt mount gt nomoun
  • Jaspersoft 报表:PDF中文不显示问题

    问题概述 PDF中文不显示问题主要是Jasperreports提供的font包不提供中文格式支持 所以我们需要自定义一个font包 用于支持 第一步 在Jaspersoft Studio中添加中文字体 1 下载微软雅黑字体文件 ttf 字体
  • 【论文精读】Vis-MVSNet: Visibility-aware Multi-view Stereo Network

    今天属于是重读经典了 这是一篇发表在BMVC2020上的文章 试图解决MVS中可见性的问题 该文章最近在拓展之后被发表在了IJCV上 本文的解读是基于扩展之后的IJCV版本 期刊的版本内容更加详细一点 文章链接 BMVC2020版本和IJC
  • Unity-点击和拖拽手势总结

    using System Collections using System Collections Generic using UnityEngine using UnityEngine EventSystems using UnityEn
  • PID理解

    这里要理解的是PID的值 也就是通过以上公式计算出来的值 和我们控制系统的输入有什么关系 公式大致的解释就是 误差值 比例 当误差小时 慢慢接近目标 当误差大时快速的接近目标 对误差值的积分 消除稳态误差 对误差值的微分 增加阻尼 使系统更
  • 软件项目成本估算的基本方法

    一 传统的估算方法 1 至下而上的估算 对工作组成部分进行估算的一种方法 先把工作分解为更细节的部分 再对低层次上每个细节部分所需的投入进行估算 最后汇总得到整个工作所需的总投入 该估算方法的准确性取决于较低层次上的工作的规模和复杂程度 2
  • 初学者必备的3种Python爬虫库

    用Python进行网站数据抓取是我们获取数据的一个重要手段 而在Python中网站抓取有大量的库可以使用 如何选择合适的库用于自己的项目呢 先不直接给出答案 下文所列举的是我认为较为通用的3个Python库 将通过对它们的优劣评估来回答那些
  • 安装tensorflow,非常适用于同时安装了两个python2.x和python3.x两个版本号的(纯干货)

    安装步骤 首先安装anaconda 并且下载好对应的python版本 对于Anaconda中安装一个内置的python版本解析器 其实就是python的版本 根据对应的python版本使用这条命令conda create name tens
  • 【华为OD机试真题】AI处理器组合(java)100%通过率 超详细代码注释 代码深度解读

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 AI处理器组合 知识点数组 时间限制 1s空间限制 256MB限定语言 不限 题目描述 某公
  • 数据结构与算法 基础概述 入门必备!

    一 数据的逻辑结构 1 集合结构 结构中的数据元素之间除了同属于一个集合的关系外 再无任何其它关系 2 线性结构 结构中的数据元素之间存在着一对一的线性关系 3 树形结构 结构中的数据元素之间存在着一对多的层次关系 4 图状结构 结构中的数