数据结构与算法之间有何关系?

news2024/9/22 22:37:25

相信很多人都应该上个《数据结构与算法》这门课吧,而这两个概念也如孪生兄弟一样经常被拿出来一起讨论。那它们究竟是一个什么样子的关系呢?

听到数据结构与算法我第一反应是想到了Pascal 语言之父尼古拉斯·沃斯在他的《Algorithms + Data Structures = Programs》著作中提出了计算机科学中著名的观点[程序 = 算法 + 数据结构]。

从这一点来看,数据结构和算法应该是两门完全独立的学科,但是我们平时接触的大多是两者同时说起,感觉两者就是一体的,要想搞清楚两者之间具体是什么关系,我们要先搞明白它们各自是什么。

下面是我摘取的某科上关于两者的定义:

数据结构是一种数据组织、管理和存储的格式。数据结构研究的对象是数据的逻辑结构、物理结构以及两者之间的关系。

算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

单从定义可能很难直接看出两者关系,我们把两者一起说起一个重要的依据也恰恰来源于著名的观点[程序 = 算法 + 数据结构],因为我们平时更多关注的是程序,是解决实际问题。此时也就必须要算法与数据结构相辅相成共同来解决问题。

算法是解决问题的方法,是一系列指令,那么就意味着其必须要有输入,只有有了输入才能知道要解决的问题,才能去操作指令,输入是什么?就是数据

数据结构是管理数据的组织与存储的,是研究数据的。

因此我们要把数据结构与算法联系起来,就必须要建立一个桥梁,而这个数据就是最佳的选择,或者称作:数据类型

而数据类型于算法而言就是基石,是为算法服务的,算法就是建立在特定的数据类型之上的。

而数据类型于数据结构而言就是灵魂,数据的定义、组织、存储最后就是为了应用,数据类型就是最后一步的升华,使得这静态的数据有了意义。

其次数据结构关注三个要素:逻辑结构、物理结构、数据运算。逻辑结构是指数据之间的逻辑关系和数据最终存储在计算机中的实际位置没有关系,而物理结构就是指数据最终存在计算机上的位置,最后数据运算是针对逻辑结构进行的运算。

而上面的说的数据类型就相当于数据结构中逻辑结构+数据运算,大多数高级语言程序员是不太关注数据最终的存储位置的,因为高级语言已经帮我们做完了,这也导致我们很多时候默认数据结构就是数据类型,提到数据结构就是这个类怎么定义,提到这个问题解决方案就是需要什么算法,算法需要什么数据类型支撑,时间久了,大家也就习惯把数据类型当作数据结构了,也就习惯把数据结构与算法绑定在一起了。

数据结构与算法既是紧密相连互相成就又是各有关注,因此我们还是要搞清楚它们之间的关系。也为我们后面深入学习数据结构与算法提供一个直观感受。

:测试方法代码以及示例源码都已经上传至代码库,有兴趣的可以看看。https://gitee.com/hugogoos/Planner

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2156027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

esp32s3分区表配置及读写

一、分区表介绍 每片 ESP32-S3 的 flash 可以包含多个应用程序,以及多种不同类型的数据(例如校准数据、文件系统数据、参数存储数据等)。因此,在 flash 的 默认偏移地址 0x8000 处烧写一张分区表。 分区表中的每个条目都包括以下…

【d47】【Java】【力扣】997.找到小镇的法官

思路 记录入度和出度 一个人可以连接多个,一个人也可以被多个人连接,就是图的性质 一个人可以信任多人,一个人也可以被多个人信任 统计入度出度, 法官:入度n-1,出度0 其他人:因为被所有其他人信任的 只能…

JS执行机制(同步和异步)

JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。 异步:在做这件事的同时,你还可以去处理其他事 他们的本质区别:这条流水线上各个流程的执行顺序不同。 同步任务 同步任务都在主线程上执行,形成一个执行栈。 异步…

7、论等保的必要性

数据来源:7.论等保的必要性_哔哩哔哩_bilibili 等级保护必要性 降低信息安全风险 等级保护旨在降低信息安全风险,提高信息系统的安全防护能力。 风险发现与整改 开展等级保护的最重要原因是通过测评工作,发现单位系统内外部的安全风险和脆弱…

【计网】从零开始掌握序列化 --- JSON实现协议 + 设计 传输\会话\应用 三层结构

唯有梦想才配让你不安, 唯有行动才能解除你的不安。 --- 卢思浩 --- 从零开始掌握序列化 1 知识回顾2 序列化与编写协议2.1 使用Json进行序列化2.2 编写协议 3 封装IOService4 应用层 --- 网络计算器5 总结 1 知识回顾 上一篇文章我们讲解了协议的本质是双方能够…

【JavaEE】多线程编程引入——认识Thread类

阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!希望本文内容能帮到你! 目录 引入: 一:Thread类 1:Thread类可以直接调用 2:run方法 &a…

SpringBoot+thymeleaf竞赛报名系统

一、介绍 > 这是一个基于Spring Boot的后台管理系统。 > 使用了Mybatis Plus作为持久层框架,EasyExcel用于Excel操作,Thymeleaf作为前端模板引擎。 > 界面简洁,功能丰富,完成度比较高,适用于JAVA初学者作…

安国U盘量产工具系列下载地址

来源地址(访问需要科学工具):AlcorMP (Последняя версия ALCOR U2 MP v23.08.07.00.H) – [USBDev.ru] 版本列表: AlcorMP(最新版本的 ALCOR U2 MP v23.08.07.00.H) AlcorMP是在Alcor Mic…

SpringBoot项目License证书生成与验证(TrueLicense) 【记录】

SpringBoot项目License证书生成与验证(TrueLicense) 【记录】 在非开源产品、商业软件、收费软件等系统的使用上,需要考虑系统的使用版权问题,不能随便一个人拿去在任何环境都能用。应用部署一般分为两种情况: 应用部署在开发者自己的云服务…

数据集-目标检测系列-火车检测数据集 train >> DataBall

数据集-目标检测系列-火车检测数据集 train >> DataBall 数据集-目标检测系列-火车检测数据集 数据量:1W 想要进一步了解,请联系 DataBall。 DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,不断增加…

跟李沐学AI:注意力机制、注意力分数

目录 不随意线索 随意线索 注意力机制 非参注意力池化层 参数化的注意力机制 注意力机制总结 注意力分数 拓展到高维度 加性模型(Additive Attention) 点积注意力机制(Dot Product Attention) 注意力分数总结 不随意线…

vscode 顶部 Command Center,minimap

目录 vscode 顶部 Command Center 设置显示步骤: minimap设置 方法一:使用设置界面 方法二:使用命令面板 方法三:编辑 settings.json 文件 左侧目录树和编辑器字体不一致: vscode 顶部 Command Center Visual Studio Code (VSCode) 中的 Command Center 是一个集中…

240912-设置WSL中的Ollama可在局域网访问

A. 最终效果 B. 设置Ollama(前提) sudo vim /etc/systemd/system/ollama.service[Unit] DescriptionOllama Service Afternetwork-online.target[Service] ExecStart/usr/bin/ollama serve Userollama Groupollama Restartalways RestartSec3 Environme…

Python redis 安装和使用介绍

python redis安装和使用 一、Redis 安装1.1、Windows安装 二、安装 redis 模块二、使用redis 实例1.1、简单使用1.2、连接池1.3、redis 基本命令 String1.3.1、ex - 过期时间(秒)1.3.2、nx - 如果设置为True,则只有name不存在时,当…

fiddler抓包08_抓Android手机请求

课程大纲 手机抓包,电脑端的设置和IOS端相同,设置一次即可,无需重复设置。 前提:电脑和手机连接同一个局域网 土小帽电脑和手机都连了自己的无线网“tuxiaomao”。 Step1. 电脑端设置 ① 打开Fiddler - 开启抓包(F12…

django项目——图片上传到阿里云OSS对象存储

文章目录 实现图片上传到阿里云OSS对象存储1. 创建阿里云OSS对象存储2. 查询获取接口访问key和秘钥3. 安装阿里云的SDK集成到项目中使用3.1 python直接操作oss23.2 django配置自定义文件存储上传文件到oss 实现图片上传到阿里云OSS对象存储 1. 创建阿里云OSS对象存储 开发文档…

重磅!人工智能等级考试来了,考试免费,上海落户可以加分

目录 简要介绍 一、关心的问题 1. 什么是上海市高等学校信息技术水平考试? 2. 考试分几个级别?有哪些科目? 3. 哪些人可以进行报名? 4. 每名学生可以报考几个科目? 5. 有没有考试大纲? 6. 考试是否有…

[笔记]23年度展会信息— 吊钩 起升机构

1.吊钩的规格参数 5吨吊钩重26公斤 10吨64公斤。 另外一套型号,更轻: 不确定是结构设计还是用钢材质达到了减重效果。 看看重载双滑轮吊钩: 50吨,400公斤,只是吊钩。 然后是行车吊钩与钢丝绳的直径。这在计算空载吊…

Web Components之继承

我们在使用Web Components自定义组件的时候,我们需要继承HTMLElement这个浏览器内置对象,但是如果我要一些高级封装,给组件内置一些方法的话。我们就需要使用继承的方式,在父类中实现基本功能的封装。 1 父类的封装 以下是我的继…

一文搞懂UEFI

Hi!早哦。今天又是宠读者的一天,应允聊聊UEFI。 文章目录 前言UEFI是什么?传统BIOSBIOS作为标准BIOS作为实现BIOS的工作原理传统BIOS的局限性传统BIOS启动过程 BIOS VS UEFIUEFI?UEFI概念EFI 系统分区EFI 变量EFI 的启动过程EFI 变…