[数据结构与算法] - 1. 什么是数据结构?
人们利用计算机的目的是解决实际问题.
再面对实际问题时,首先要明确所要解决的问题设计到的个体.
深入分析个体之间的关系,为其建立一个数学模型,并分析其基本运算.
然后确定恰当的数据结构来表示该模型,设计合适的数据存储及相关算法.
最后完成具体的程序来解决实际问题.
计算机求解问题的核心是算法设计.
而算法设计又高度依赖于数据结构.
数据结构的选择取决于问题本身的需求.
解决问题的效率与数据结构又有什么关系?
> 什么是数据结构?
<数据结构,算法与运用>作者 Sartaj Sahni认为:
"数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系,这些联系可以通过定义相关的函数来给出."
<数据结构与算法分析>作者 Clifford A.Shaffer认为:
"数据结构是(抽象数据类型AbstractDataType)的物理实现."
中文维基百科:
"数据结构(datastructure)是计算机中存储,组织数据的方式.通常情况下,精心选择的数据结构可以带来最优效率的算法."
总结: 这些解释中,都包含数据结构和算法这两个词.
通过图书举例
解决问题方法的效率,跟数据的组织方式有关.
要有效地解决问题,需要考虑以下三个因素:
-
数据对象在计算机中的组织方式.
-
数据对象必定与一系列加在其上的操作相关联.
-
完成这些操作所用的方法就是算法.
用数据元素之间关系的性质,来刻划数据结构的特点,可将数据结构分为:
-
集合
-
线性结构
-
树形结构
-
图结构
集合结构较为简单,不再介绍.
线性结构指数据元素之间是一种线性关系,或者说是前后关系,是一种一对一的关系,
比如前面所讲书架上的书,除两端的书之外每一本书前面紧相邻的只有一本,后面紧相邻的也只有一本.
树形结构简称树结构,或称为层次结构.其关系成为层次关系,或称"父子关系","上下级关系"等.每一个节点可以有多于一个的"直接下级".但是,它只能有唯一的直接上级.
图结构是一个多对多的关系,比如在学校里,一个教师可以带多门课,而该老师所讲的任何一门课可由多个学生选学,同时一个学生又可以选学多门课程.
目的:
是为了在处理数据元素时,借助元素之间的关系,实现对数据快速有效地处理.
而计算机是具体工作的实施者.
所以必须考虑如何在计算机中表示数据元素及其之间的关系.也就是考虑数据元素
及其之间的关系在计算机中是如何存储的. 这就是数据的物理结构,也叫存储结构.
数据结构的研究涉及到以下三个方面:
一是数据元素之间的逻辑关系,即数据的逻辑结构.
二是将数据元素及其之间的关系,在计算机内存储的方法,即数据的物理结构.
三是作用于数据结构之上的运算.
作者:ukyo--碳水化合物
出处:https://www.cnblogs.com/ukzq/p/10527442.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端