一、基本概念
-
数据:可输入计算机处理的符号集合(客观事物的数字化表示)
-
数据元素:数据的基本单位(包含若干数据项)
-
数据项:不可分割的最小数据单位
-
数据对象:性质相同的数据元素集合
-
数据结构:研究数据元素间的逻辑关系与存储方式
二、数据结构三要素
要素 | 说明 |
---|---|
逻辑结构 | 数据元素间的抽象关系 |
存储结构 | 数据在计算机中的具体存储方式 |
运算 | 对数据实施的操作(增删改查等) |
三、逻辑结构分类
-
集合结构:无序的数据集合
-
线性结构:1:1关系(线性表、栈、队列)
-
树形结构:1:n关系(二叉树、B树等)
-
图状结构:n:m关系(有向图、无向图)
四、存储结构类型
类型 | 特点 | 示例 |
---|---|---|
顺序存储 | 连续内存空间,通过物理位置表示逻辑关系 | 数组 |
链式存储 | 通过指针域维护逻辑关系 | 链表 |
索引存储 | 建立附加索引表快速定位 | 数据库索引 |
哈希存储 | 通过哈希函数直接计算存储位置 | 哈希表 |
五、算法基础
1. 算法特性
-
输入(≥0)、输出(≥1)
-
有穷性(有限步骤终止)
-
确定性(无二义性)
-
可行性(可执行操作)
2. 复杂度分析
时间复杂度(常用阶)
O(1) < O(logn) < O(n) < O(nlogn) < O(n²) < O(n³) < O(2ⁿ) < O(n!)
空间复杂度:算法运行所需的存储空间
六、哈希表详解
实现原理
-
通过哈希函数将键映射到存储位置
-
处理冲突方法:开放定址法、链地址法等
迭代器访问
// 示例:C++中访问哈希表元素
auto it = hashMap.find(key);
if (it != hashMap.end()) {
int value = it->second; // 获取键对应的值
// it->first 表示键
// it->second 表示值(如数组下标)
}
七、算法设计方法
-
分治法
-
动态规划
-
贪心算法
-
回溯法
-
分支限界法
学习路线建议
-
先掌握基础数据结构(线性表→树→图)
-
理解各种存储结构的实现差异
-
通过经典算法实践复杂度分析
-
逐步学习高级算法设计技巧