数据结构1-概述
1. 什么是数据结构
数据结构是研究以什么方式组织和存储数据更加有利于后续使用的科学
举个例子:
一般我们存储一段文本会使用string,存储一串文本使用数组string[],但对于复杂关系数据,例如图1的父子关系数据,用数组进行存储,例如{“爷爷”, “父亲”, “叔叔”, “儿子1”, “儿子2”, “儿子3”},则无法体现数据之间的层级关系,并不合理,因此我们会设计使用树结构来存储父子关系,便于后续的增删改查等操作。
2. 数据结构分类
数据结构一般而言指数据的逻辑结构(与物理结构的区别会在下节说明),使用最广泛的分类有3种:
- 线性表:元素关系1对1,可细分为顺序表、链表、队列、栈
- 树:元素关系1对n,可细分为普通树、二叉树等
- 图:元素关系n对n
(元素是数据存储的最小单元,可以是字符、字符串、数字,也可以是结构化数据例如json等等)
3. 数据的逻辑结构&物理结构
数据如何存储,首先思考如何组织数据,再思考如何实现存储,因此从执行顺序和思考角度上,可将存储结构分成逻辑结构,和物理结构
- 逻辑结构:按照数据内部元素之间的关系,思考如何组织数据(元素关系包括1对1关系,1对多关系,多对多关系)
- 物理结构:从存储的可行性,更新和取数便利性出发,思考在物理介质中(一般是内存)如何存储数据,是集中存储、还是分散存储
3.1 逻辑结构
关于逻辑结构的说明,可以参见上一节(数据结构分类)
3.2 物理结构
集中存放 | 分散存放 | |
存储方式 | 顺序存储结构 | 链式存储结构 |
一般底层实现形式 | 数组 | 链表 |
优点 | 遍历快 | 插入/删除快,空间利用率高 |
缺点 | 插入/删除慢,空间利用率低 | 遍历慢 |
适用场景 | 频繁查询,例如商品检索系统 | 频繁更新,例如店铺管理系统 |
4. 数据结构与算法的关系&区别
简单点说:
- 数据结构:一门研究如何组织和存储数据的科学
- 数据算法:一门研究如何处理和分析数据的科学