【数据结构与算法】数据结构(Data Structure)的基本概念及其研究对象

news2024/9/21 2:43:40

什么是程序

算法+数据结构=程序 —— Nicklaus Wirth(尼古拉斯·沃斯)

Niklaus Wirth是一位著名的计算机科学家,他提出了"程序=算法+数据结构"的观点。他认为,程序不仅仅是执行特定任务的一段代码,而是由算法和数据结构两部分组成的。算法定义了程序如何操作数据以达到预期的结果,而数据结构则定义了程序如何存储和组织数据。


什么是数据结构

数据结构是计算机科学中的一个核心概念,它是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构定义了数据的组织、管理和存储格式,它使得数据可以高效地被访问和修改。数据结构也可以看作是数据对象在计算机中的存储方式以及在这个对象上的一组操作。

数据结构是算法的基础,不同的数据结构适合于不同的算法。通过选择和设计合适的数据结构,可以提高算法的效率。常见的数据结构包括数组、链表、栈、队列、树、图、哈希表等。

数据结构相关的基本概念

  • 数据(data):数据是描述客观事物的符号,是能被计算机识别,并输入给计算机处理的符号集合。
  • 数据元素(data element):数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。
  • 数据项(data item):一个数据元素可以由若干个数据项组成。数据项是数据的不可分割的最小单位。
  • 数据对象(data object):性质相同的数据元素的集合,是数据的子集。
  • 数据结构(data structure):数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
  • 逻辑结构:数据对象中数据元素之间的相互关系。
  • 存储结构:数据结构在计算机中的表示(也称物理结构)。
  • 抽象数据类型(Abstract Data Type,ADT):是一个数学模型以及定义在该模型上的一组操作。ADT定义了数据类型的行为,但并没有给出数据类型的具体实现。

数据结构的研究对象

  • 逻辑结构:数据元素之间的逻辑关系,这种关系是与数据的集合方式无关的。主要有四种逻辑结构:线性结构、树形结构、图形结构和集合结构。
  • 存储结构:数据在计算机内存中的存储方式,也称为物理结构。主要有顺序存储、链式存储和索引存储等方式。
  • 数据操作:定义在数据上的一些操作(增删改查)。

例子

  1. 城市网络铺设:

    • 逻辑结构:在逻辑层面上,城市网络铺设可以被看作是一个图结构,其中顶点代表城市,边代表网络连接。这个图可以是无向的(如果网络连接是双向的),也可以是有向的(如果网络连接是单向的)。
    • 存储结构:在存储层面上,这个图可以用邻接矩阵或者邻接表等方式存储。邻接矩阵是一个二维数组,其中的元素表示对应的两个城市之间是否有网络连接;邻接表则是一个一维数组,其中的每个元素是一个列表,表示对应的城市连接到的所有城市。
    • 逻辑结构和存储结构的关系在于,逻辑结构定义了城市之间的网络连接,而存储结构则决定了如何在计算机内部表示这些连接。
  2. 计算机文件系统:

    • 逻辑结构:在逻辑层面上,文件系统通常被组织成一个层次化的结构,也就是我们常说的目录(文件夹)和文件。每个目录可以包含其他目录或文件,每个文件都位于某个目录下。
    • 存储结构:在物理存储层面上,文件系统的存储结构可能会依赖于特定的文件系统类型和底层的存储设备。例如,文件可能会被分割成多个块(block)存储在磁盘的不同位置,而目录则存储了文件名到这些块的映射。
    • 逻辑结构和存储结构的关系在于,逻辑结构定义了用户如何与文件系统交互,而存储结构则决定了文件系统如何在底层设备上实现这种交互。
  3. 课程安排:

    • 逻辑结构:在逻辑层面上,课程安排可以看作是一个二维的表格,其中行代表时间(如一周内的每一天、每一天的每一个时段),列代表地点(如教室)。表格中的每个单元格则代表一个课程。
    • 存储结构:在存储层面上,这个表格可以用一个二维数组来存储。数组的每个元素代表一个课程,元素的位置对应于课程的时间和地点。
    • 逻辑结构和存储结构的关系在于,逻辑结构定义了课程的时间和地点,而存储结构则决定了如何在计算机内部表示这些信息。
  4. 成绩单:

    • 逻辑结构:在逻辑层面上,成绩单可以看作是一个二维的表格,其中行代表学生,列代表课程,表格中的每个单元格代表一个成绩。
    • 存储结构:在存储层面上,这个表格可以用一个二维数组来存储。数组的每个元素代表一个成绩,元素的位置对应于学生和课程。
    • 逻辑结构和存储结构的关系在于,逻辑结构定义了学生的成绩,而存储结构则决定了如何在计算机内部表示这些成绩。

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

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

相关文章

Linux--线程同步

目录 0.上篇 1. 线程同步概念 2.认识条件变量 2.1条件变量的概念 2.2认识接口 2.3写一个测试代码 3.生产者消费者模型 3.1概念部分 1.基本概念 2.主要问题 3.优点 4.思考切入点(321原则) 3.2编写基于BlockingQueue的生产者消费者模型&…

js执行机制----事件循环

前言 问题 一般情况下,我们都认为js是顺序执行的 但是遇到下列情况 setTimeout(function(){console.log(定时器开始啦) });new Promise(function(resolve){console.log(马上执行for循环啦);for(var i 0; i < 10000; i){i 99 && resolve();} }).then(function(…

MySQL数据库查询索引失效场景

在连表情况下,如果排序字段涉及到了两个表,排序字段将无法走索引. 加上第二个排序字段之后,走全表扫描了. 或者尽量让两次排序都用同一个表的字段,这样可以建联合索引让排序也能走索引.&#xff08;不想建联合索引的话&#xff0c;可以第二次排序用表id&#xff0c;这样单个的…

天池AI大模型技术提升营火热上线,四重好礼等你来拿!

目标锁定&#xff0c;加速成长&#xff0c;四大活动玩法助您提升技术&#xff0c;赢取四重好礼&#xff1a; 【活动一】完成3步学习任务&#xff0c;赢取定制加湿器 【活动二】邀请好友报名指定学习赛&#xff0c;累计助力赢苹果iPad、大疆无人机、韶音蓝牙耳机等好礼 【活动三…

华为1000人校园实验记录

在这里插入代码片1000人校园区网设计 1、配置Eth-trunk实现链路冗余 vlan 900 管理WLAN #接入SW8 操作&#xff1a;sys undo in en sysname JR-SW8 int Eth-Trunk 1 mode lacp-static trunkport g0/0/1 0/0/2 port link-type trunk port trunk allow-pass vlan 200 900 qu vla…

NSSCTF-Web题目26(PHP弱比较)

目录 [SWPUCTF 2022 新生赛]funny_php 1、题目 2、知识点 3、思路 [ASIS 2019]Unicorn shop 4、题目 5、知识点 6、思路 [SWPUCTF 2022 新生赛]funny_php 1、题目 2、知识点 弱比较、双写绕过 3、思路 出现源代码&#xff0c;我们进行审计 第一个if 这里要我们GET方…

OPC UA S7-1500客户端学习

OPC UA S7-1500 OPC UA服务器功能 浏览PLC&#xff0c;服务器中的数据是是一个个节点&#xff0c;上下有联系&#xff0c;浏览请求是请求一个节点&#xff0c;展开上一级或者下一节数据。 符号方式读访问PLC数据。客户端发一条读请求&#xff0c;服务器回应。 写也是一样的 注…

永久删除的文件如何恢复?文件恢复,3种方法任君选择!

“我不小心把回收站清空了&#xff0c;把里面的所有文件都永久删除了&#xff0c;里面一些重要的文件还能恢复吗&#xff1f;” 当我们在清理电脑的时候&#xff0c;一些重要的文件有时会夹杂着垃圾文件一起被我们清理干净&#xff0c;我们只能回想着刚刚窗口弹出来“永久删除…

Spring Boot集成Activity7实现简单的审批流

由于客户对于系统里的一些新增数据&#xff0c;例如照片墙、照片等&#xff0c;想实现上级逐级审批通过才可见的效果&#xff0c;于是引入了Acitivity7工作流技术来实现&#xff0c;本文是对实现过程的介绍讲解&#xff0c;由于我是中途交接前同事的这块需求&#xff0c;所以具…

ospf的MGRE实验

第一步&#xff1a;配IP [R1-GigabitEthernet0/0/0]ip address 12.0.0.1 24 [R1-GigabitEthernet0/0/1]ip address 21.0.0.1 24 [R1-LoopBack0]ip address 192.168.1.1 24 [ISP-GigabitEthernet0/0/0]ip address 12.0.0.2 24 [ISP-GigabitEthernet0/0/1]ip address 21.0.0.2 24…

Python | Leetcode Python题解之第238题除自身以外数组的乘积

题目&#xff1a; 题解&#xff1a; class Solution:def productExceptSelf(self, nums: List[int]) -> List[int]:length len(nums)# L 和 R 分别表示左右两侧的乘积列表L, R, answer [0]*length, [0]*length, [0]*length# L[i] 为索引 i 左侧所有元素的乘积# 对于索引为…

C4D各版本软件下载+自学C4D 从入门到精通【学习视频教程全集】+【素材笔记】

下载链接&#xff1a; 迅雷网盘https://pan.xunlei.com/s/VO1tydOxEo-Az_QCM-Jz2R4RA1?pwdvxg4# 夸克网盘https://pan.quark.cn/s/fe7450b02d80 百度网盘https://pan.baidu.com/s/1Omj4WL93F1DNdA2iP4SiMQ?pwdwmb8

vue仿甘特图开发工程施工进度表

前言 本文是根据项目实际开发中一个需求开发的demo&#xff0c;仅用了elementUI&#xff0c;可当作独立组件使用&#xff0c;C V即用。 当然没考虑其他的扩展性和一些数据的校验&#xff0c;主要是提供一个处理思路&#xff0c;有需要的小伙伴可以直接复制&#xff1b;本demo的…

python-区间内的真素数(赛氪OJ)

[题目描述] 找出正整数 M 和 N 之间&#xff08;N 不小于 M&#xff09;的所有真素数。真素数的定义&#xff1a;如果一个正整数 P 为素数&#xff0c;且其反序也为素数&#xff0c;那么 P 就为真素数。 例如&#xff0c;11&#xff0c;13 均为真素数&#xff0c;因为 11 的反序…

open3d:随机采样一致性分割平面

1、背景介绍 随机采样一致性算法&#xff08;RANSAC Random Sample Consensus&#xff09;是一种迭代的参数估计算法&#xff0c;主要用于从包含大量噪声数据的样本中估计模型参数。其核心思想是通过随机采样和模型验证来找到数据中最符合模型假设的点。因此&#xff0c;只要事…

python--实验13 异常处理

目录 知识点 异常概述 异常类 异常处理 捕获简单异常 原理 示例 异常处理except 原理及代码格式 try工作原理 标记程序上下文&#xff0c;异常发生时跳转 代码示例 终止行为finally 抛出异常raise 原理 代码格式 示例 自定义异常 原理 示例 断言assert 判…

Java web从入门到精通 (第 2版)中文电子版

前言 《Java Web从入门到精通&#xff08;第2版&#xff09;》共分21章&#xff0c;包括Java Web应用开发概述、HTML与CSS网页开发基础、JavaScript脚本语言、搭建开发环境、JavaBean技术、Servlet技术、过滤器和监听器、Hibernate高级应用、Java Web的数据库操作、EL&#xf…

防火墙双机备份及带宽限制

一&#xff0c;实验拓扑&#xff1a; 二&#xff0c;实验需求&#xff1a; 1&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW4&#xff0c;生产区和办公区的流量走FW2 2&…

C#(asp.net)校园宿舍管理系统-计算机毕业设计源码18150

摘 要 随着高等教育的普及&#xff0c;校园宿舍管理成为学校管理的重要组成部分。传统的宿舍管理方式存在效率低下、信息不透明等问题。同时&#xff0c;在信息技术的不断发展和应用的背景下&#xff0c;校园管理信息化已成为学校管理的重要趋势。因此&#xff0c;研究基于Asp.…

【贪心算法】贪心算法30题

一、贪心算法简介 证明贪心策略正确性的常用方法&#xff1a;直接证明、交换论证法、反证法、分类讨论… 二、相关编程题 2.1 柠檬水找零 题目链接 860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 题目描述 算法原理 提示&#xff1a;最优解和贪心解唯一可能不同…