【技术白皮书】内功心法 | 第一部分 | 数据结构与算法基础(数据结构)

数据结构与算法基础

  • 内容简介
  • 数据结构
    • 数据模型
      • 数据结构的表现形式
    • 基本概念
    • 数据(Data)
    • 数据元素(data element)
    • 数据结构的定义
      • 物理结构和逻辑结构
        • 逻辑结构
          • 逻辑结构表现形式
            • 二元组模型
            • 集合结构模型
            • 线性结构模型
            • 树结构模型
            • 图结构模型
    • 解决问题
      • 顶层计算操作
      • 底层计算操作
      • 抽象数据类型(ADT)
        • 抽象数据类型的三元组

内容简介

数据结构与算法的基础知识概览。我们深入而细致地引入了数据结构与算法领域的一系列基本概念,旨在为读者铺设一条理解之路。具体而言,本篇文章的首要目标是阐释数据结构的本质及其研究范畴,使读者能够清晰把握数据结构这一术语背后的深刻含义及其所涵盖的广泛议题。同时,也着重介绍了算法的概念,并深入探讨了如何评价一个算法的性能,包括效率、稳定性等多个维度,帮助大家建立起对算法性能评估的全面认知。

当人们运用计算机来解决现实世界中具体面临的挑战时,其过程往往遵循一套系统而严谨的流程。首先,基于对现实世界的深入理解和认知,人们形成印象并提炼出关键概念,进而转化为有价值的信息。

数据结构

数据结构,其核心聚焦于程序设计领域内计算机操作的对象,以及这些对象之间的关联方式与操作机制,旨在深入理解并优化数据在计算机中的存储、组织及处理方式。

数据模型

在上述的数据结构的基础上,构建一个能够反映现实世界实体及其相互关系的概念模型至关重要。随后,这一模型作为桥梁,将复杂的实际问题转化为计算机能够识别和处理的形式,并据此设计相应的程序逻辑。

数据结构的表现形式

数据结构紧密关联于从概念模型的构建到模型向计算机实现转化的全过程,为后续的程序设计奠定坚实基础。它深刻揭示了概念模型的内在构造,即探究一个概念模型由哪些基本元素(数据)构成,这些元素如何组织,以及它们所展现出的特定结构形态。

基本概念

首先,让我们引入并阐述一些基础性的概念与专业术语,为后续讨论奠定坚实的理论基础。
在这里插入图片描述###

数据(Data)

数据是涵盖了描述客观事物的广泛范畴,包括数值、字符以及所有能被输入计算机并得到有效处理的符号集合。这一概念的边界相当宽泛,不仅限于常见的数值数据、字符及字符串,还广泛囊括了声音、图像等一切可数字化并输入计算机进行处理的元素。

举例来说,人的姓名、身高、体重等基本信息以字符和数字的形式存在,无疑是数据的一部分;同时,人的照片、指纹、三维模型乃至语音指令等,只要能够被计算机识别和处理,同样也属于数据的范畴


数据元素(data element)

数据元素构成了数据的基本单元,是数据集合中的独立个体,在计算机程序中常被视作一个不可分割的整体进行处理。
在这里插入图片描述
举例来说,一条详尽记录某位学生信息的条目,或者空间中某一点的三维坐标值,均可视为一个数据元素。这些数据元素通常由多个数据项构成,数据项作为组成要素,如描述学生详细情况的姓名、性别、学号等,或三维坐标中每一维度的具体数值,均属于数据项范畴。

注意,数据项具有原子性特征,意味着它们是构成数据元素的最小且不可再分的单位

数据结构的定义

相互之间存在一种或多种特定关联的数据元素所组成的集合,是一种专门设计用于组织和存储数据以便高效利用的格式。这种格式旨在清晰地反映数据的内部结构,即揭示一个数据由哪些成分数据构成、这些成分数据以何种方式相互关联以及整体呈现出何种结构形态。

物理结构和逻辑结构

信息不仅存在于逻辑思维的领域,还广泛存在于计算机的世界中。因此,作为信息载体的数据也同样分布于这两个层面。数据元素及其相互关系可以通过两种形式来表示:一方面是数据结构的逻辑层面,反映了数据的逻辑关系;另一方面是计算机世界中的物理层面,体现了数据的存储结构。

逻辑结构

数据的逻辑结构可以根据数据元素之间的相互关系特征进行分类,主要分为四种类型:集合、线性结构、树形结构和图状结构。在此我们重点讨论的主要数据结构包括线性表、栈、队列、树和图。
在这里插入图片描述
其中,线性表、栈和队列归属于线性结构,而树和图则被视为非线性结构。

逻辑结构表现形式

数据的逻辑结构可以通过两种方式进行描述:一是使用二元组,二是采用图形表示。

二元组模型

数据结构的二元组表示形式为:

数据结构 = {D , S}

( D ) 代表数据元素的集合,而 ( S ) 则是 ( D ) 中数据元素之间关系的集合。这些关系以序偶的形式表达,其构成是两个元素 ( x ) 和 ( y ),并按特定顺序排列,表达为二元组 ( <x, y> )。在这个序偶中,( x ) 被视为第一元素,( y ) 则为第二元素。
在这里插入图片描述
在使用图形表示数据结构时,图中的点代表数据元素,而弧则表示这些元素之间的关系。当数据元素 ( x ) 和 ( y ) 之间存在关系 ( <x, y> ) 时,图中会有一条弧从表示 ( x ) 的点指向表示 ( y ) 的点。

集合结构模型

一种数据结构可以用二元组的形式表示为 ( set = (K, R) ),其中 ( K = {01, 02, 03, 04, 05} ) 代表元素集合,而 ( R = {} ) 则为关系集合(空)。
在这里插入图片描述

线性结构模型

在此数据结构中,数据元素是有序排列的。其中一个元素可以被称为“第一个”元素(元素 01),而另一个则被称为“最后一个”元素(元素 04)。除了第一个元素外,每个其他元素都有且仅有一个直接前驱元素;同样,除了最后一个元素外,每个元素也有且仅有一个直接后续元素。
在这里插入图片描述
数据结构可以用二元组表示为 ( {linearity} = (K, R) ),K = {01, 02, 03, 04, 05} R = {<02,04>, <03,05>, <05,02>, <01,03>},这种特性表明,数据元素之间存在一对一的线性关系。因此,我们将这种特征的数据结构称为线性结构。

树结构模型

在数据结构 tree 中,除了一个数据元素(01)外,其余每个数据元素都有且仅有一个直接前驱元素,但可以有多个直接后续元素。这种结构的特征是数据元素之间呈现1对N的关系,因此我们将其称为树结构。
在这里插入图片描述
数据结构可以用二元组表示为 ( {tree} = (K, R) ),其中:

K = {01, 02, 03, 04, 05, 06} 
R = {<01,02>, <01,03>, <02,04>, <02,05>, <03,06>}
图结构模型

在数据结构 graph 中,每个数据元素可以拥有多个直接前驱元素和多个直接后续元素。这种结构特征表现为数据元素之间的 M 对 N 关系,因此我们称之为图结构。
在这里插入图片描述
数据结构的二元组表示为 graph = (K,R),数据的存储结构主要包括对数据元素本身的存储以及其之间关系的表示。

K = {01, 02, 03, 04, 05} 
R = {<01,02>, <01,05>, <02,01>, <02,03>, <02,04>, <03,02>, <04,02>, <04,05>, <05,01>, <05,04>}

在计算机中,数据元素之间的关系主要有两种表示方式:顺序映像和非顺序映像,这对应于两种存储结构:顺序存储结构和链式存储结构。

  • 顺序存储结构数据元素存储于一块连续的内存区域,元素间的前驱和后续关系则通过它们在内存中的相对位置来体现。
  • 链式存储结构的特征是数据元素存储于不连续的内存空间,每个存储节点对应一个待存储的数据元素。元素之间的逻辑关系通过存储节点之间的链接进行表达。

解决问题

在解决一个明确的问题时,首先需要选择一个合适的数据模型。接下来,需弄清楚该模型在已知条件下的初始状态与期望的结果状态,以及两者之间的关系。
在这里插入图片描述
然后,探索从数据模型的初始状态转变为所需结果状态所需的运算步骤。

顶层计算操作

在探索运算步骤时,我们应首先关注顶层的运算步骤,然后再深入底层的运算步骤。顶层运算步骤是指定义在数据模型层面的宏观运算,它们构成了解决问题的核心内容。这些步骤涉及数据模型中的变量,在此阶段,我们暂不考虑其具体数据结构。运算则以数据模型中的变量进行操作,既可以是运算对象,也可以是运算结果,或两者兼而有之,统称为基于数据模型的运算。由于在这一阶段不涉及变量的具体数据结构,这些运算具有抽象性,不关注细节实现。

底层计算操作

底层运算步骤指的是对顶层抽象运算的具体实现,依赖于数据模型的结构和其具体表示。因此,底层运算步骤可以分为两部分:一是数据模型的具体表示,二是基于该模型的运算的实际实现。我们可以将其视为微观运算。可以说,底层运算是顶层运算的细化,旨在为顶层运算提供支持。

为了使顶层算法与底层算法独立设计,避免相互干扰,我们需要对它们的接口进行抽象。这意味着底层运算仅通过这个接口来服务于顶层,而顶层则通过同样的接口调用底层运算。这种接口通常被称为抽象数据类型。

抽象数据类型(ADT)

抽象数据类型(Abstract Data Type,简称ADT)是由一种数据模型及其上定义的一组操作构成的。ADT包含定义和实现两个方面,其中定义与实现是相互独立的。抽象数据类型的定义仅依赖于其逻辑特性,而不受具体实现的影响。换句话说,尽管内部结构可能发生变化,只要其逻辑特性保持不变,其使用方式就不会受到影响。

根据抽象数据类型(ADT)的概念,对其进行定义意味着为该类型指定一个名称,并明确一组相关操作的名称。这些操作包括参数数量、每个参数的含义和顺序,以及每个操作的具体功能。一旦这些细节明确,人们便可以像使用基本数据类型那样方便地引用抽象数据类型。此外,这种定义也为抽象数据类型的实现提供了设计依据和目标。

抽象数据类型的三元组

抽象数据类型的使用与实现始终围绕其定义进行,因此二者之间没有直接联系。这种独立性确保了只要遵循规范,抽象数据类型的使用和实现可以相互独立,互不影响,从而实现对它们的有效隔离,达到抽象化的目的。

ADT = (D, S, P)

在定义抽象数据类型时,我们采用以下格式,其中 D 表示数据对象,S 是与 D 相关的关系集,而 P 则是作用于 D 的一组操作。

ADT 抽象数据类型名{ 数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作:<基本操作的定义> 
}

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

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

相关文章

GNURadio 平台实现AM信号调制解调实验

文章目录​​ 一、AM调制解调原理 1.调制原理 2.解调原理 二、搭建的GRC流图 1.AM调制信号流图 2.AM解调信号流图 一、AM调制解调原理 1.调制原理 幅度调制&#xff08; Amplitude modulation——AM&#xff09; &#xff0c; 是常规的双边带调制&#xff0c; 即使载波的…

和鲸科技创始人范向伟:拐点即将来临,AI产业当前的三个瓶颈

在科技迅猛发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;无疑已经成为引领新一轮产业革命的核心动力之一。全球企业纷纷拥抱AI技术&#xff0c;试图借助其变革力量在竞争中突围&#xff0c;然而业界对AI产业化的拐点何时来临却众说纷纭。毕竟AI技术从实验室到商业…

[SAP ABAP] INCLUDE程序创建

在ABAP中&#xff0c;INCLUDE是一种结构化编程技术&#xff0c;它允许将一段程序代码片段包含到其他程序段中&#xff0c;以便复用和维护 INCLUDE程序创建的好处 ① 代码模块化 将常用的功能或通用的子程序存放到单独的文件中&#xff0c;使得主程序更简洁、易于理解和管理 ② …

揭秘人工智能的奇幻构造:人工智能的组成及都涉及什么

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…

动态内存管理练习题的反汇编代码分析(底层)

1.C语言代码 #include <stdio.h> char* GetMemory(void) {char p[] "hello world";return p; }void Test(void) {char* str NULL;str GetMemory();printf(str); }int main() {Test();return 0; } 2.反汇编代码 VS2022x64debug #include <stdio.h>…

PCB进程初识

目录 一、什么是进程 1.课本概念 2.内核观点 二、进程的描述-PCB 1.什么是PCB 2.PCB的组织方式 3.task_struct是Linux操作系统下的PCB 4.task_struct内容分类 三、进程的查看 四、进程的创建 1.查看子进程id和父进程id 演示实例1&#xff1a; 2.fork初识 演示实例…

软件测试学习笔记丨Mitmproxy使用

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32334 一、简介 Mitmproxy是一款开源、免费的代理工具&#xff0c;支持Mac、Windows、Linux。相比其他代理工具&#xff0c;可以通过Python和Mitmproxy工具本身的插件机制&#xff0c;实现通…

npm运行时出现npm ERR! builtins is not a function报错

项目场景&#xff1a; 项目运行时什么都没动都没改突然运行不起来了&#xff0c;报错 TypeError: builtins is not a function 代码什么都没动&#xff0c;不是代码问题&#xff0c;排查后只有可能是node和npm的问题&#xff0c;所以卸载掉node重装重启 解决方案&#xff1a; …

Hierarchical Cross-Modal Agent for Robotics Vision-and-Language Navigation

题目&#xff1a;用于视觉语言导航的层次化跨模态智能体 摘要 1. 问题背景和现有方法 VLN任务&#xff1a;这是一种复杂的任务&#xff0c;要求智能体基于视觉输入和自然语言指令进行导航。 现有方法的局限性&#xff1a;之前的工作大多将这个问题表示为离散的导航图&#x…

重要的事情说两遍!Prompt「复读机」,显著提高LLM推理能力

【导读】 尽管大模型能力非凡&#xff0c;但干细活的时候还是比不上人类。为了提高LLM的理解和推理能力&#xff0c;Prompt「复读机」诞生了。 众所周知&#xff0c;人类的本质是复读机。 我们遵循复读机的自我修养&#xff1a;敲黑板&#xff0c;划重点&#xff0c;重要的事…

nacos多数据源插件介绍以及使用

概述 在微服务架构中&#xff0c;服务配置的集中管理和动态调整是至关重要的。Nacos 提供了配置管理和服务发现的功能&#xff0c;其中配置管理支持动态数据源的切换&#xff0c;增强了其在复杂环境中的适用性。默认情况下&#xff0c;Nacos 支持 MySQL 和Derby&#xff0c;但…

如何在百度地图上添加自己店铺的位置?

随着互联网的快速发展&#xff0c;如今许多事都可以通过网络去解决&#xff0c;例如线上支付、线上购物、线上订餐等&#xff0c;包括日常出行&#xff0c;人们也可以依靠地图软件去规划路线&#xff0c;然后导航至目的地。其中&#xff0c;百度地图作为国内领先的地图导航平台…

组态图卷起了3D化,这是趋势潮流还是盲目跟风呢?

在当今科技飞速发展的时代&#xff0c;组态图领域也迎来了新的变革 ——3D 化。这一现象引发了人们的广泛关注和思考&#xff1a;这究竟是一种顺应时代的趋势潮流&#xff0c;还是盲目跟风之举呢&#xff1f; 从趋势潮流的角度来看&#xff0c;组态图的 3D 化有着诸多优势。首…

PointNet++网络详解

数据集转换 数据集转换的意义在于将原本的 txt 点云文件转换为更方便运算的npy点云文件&#xff0c;同时&#xff0c;将原本的xyzrgb这 6 个维度转换为xyzrgbc&#xff0c;最后一个c维度代表该点云所属的类别。 for anno_path in anno_paths:print(anno_path)try:elements a…

软件设计之SSM(9)

软件设计之SSM(9) 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版SSM框架全套视频教程&#xff0c;Spring6SpringBoot3最新SSM企业级开发 资料可以去尚硅谷官网免费领取 学习内容&#xff1a; SpringMVC 概念及核心组件MVC初始化类数据…

POST注入通过sqli-labs靶场less-11

POST注入原理 原理介绍 进入第十一关靶场&#xff0c;我们发现是一个登录窗口&#xff0c;随意提交数据&#xff0c;显示 在url地址进行get提交&#xff0c;发现一直是登录窗口&#xff0c;页面无其他变化&#xff0c;想到post提交注入。 通关原理 打开靶场源码文件。 查看…

SEO(搜索引擎优化)指南

SEO&#xff08;Search Engine Optimization&#xff09;是通过优化网站内容、结构和外部链接&#xff0c;提升网页在搜索引擎结果中的排名&#xff0c;从而增加网站流量的过程。SEO 涉及多个层面&#xff0c;包括技术 SEO、内容优化、外部链接建设等。以下是 SEO 的核心优化策…

FineReport打开报错“配置数据库出错“怎么解决?

配置数据库被锁住&#xff0c;是否重置?将在embed文件夹生成备份并重置 我直接用管理员身份证打开就完美解决了!

AD9361,数据接口

CMOS LVDS Xilinx原语IBUFDS、OBUFDS IBUFDS、和OBUFDS都是差分信号缓冲器&#xff0c;用于不同电平接口之间的缓冲和转换。IBUFDS 用于差分输入&#xff0c;OBUFDS用于差分输出。 IBUFDS https://docs.amd.com/r/en-US/ug953-vivado-7series-libraries/IBUFDS // IBUFDS …

启明智显工业级HMI芯片Model4功耗特性分享

Model4工业级MPU是国产自主面向工业应用的RISC-V架构的应用级芯片&#xff0c;内置玄铁64bit RISC-V CPU C906&#xff0c;主频高达600MHz&#xff0c;算力约1380DMIPS。支持RTOS、linux系统&#xff0c;支持LVGL工具开发UI&#xff1b; Model4系列工业级MPU具有极强的屏显、多…