一、数据结构核心知识
(一)学习数据结构的意义
是计算机科学的基础,帮助理解程序工作原理,更高效解决问题,是大厂面试必备内容,可衡量程序员技术功底,结合算法学习,能提升分析与解决问题的能力
(二)数据结构的定义
用于组织和存储数据的方法,目的是高效访问和修改数据。例如 “整理书籍”:杂乱堆放难以查找,按规则(作者、类别等)排列则便于检索,这一过程类比数据结构的作用。
(三)数据结构的分类
数据结构分为逻辑结构和物理结构两大类,具体如下:
逻辑结构:(抽象模型,按数据元素关系分类)。
集合结构: 数据元素仅属于同一集合,无其他关系。
线性结构: 数据元素间存在 “一对一” 关系。
树形结构:数据元素间存在 “一对多” 的层次关系。
图形结构: 数据元素间存在 “多对多” 关系。
物理结构:(存储结构,数据在计算机中的存储方式) 顺序存储 -链式存储 -索引存储 -散列存储 。
(四)数据结构的用途
1.存放要处理的数据
2.实现算法策略
(五)数据结构的关键组成
数据的逻辑结构(线性结构:线性表、栈、队列、串及数组;非线性结构:树形结构、图形结构)
数据的存储结构(顺序、链式、索引、散列存储)
数据的运算(检索、排序、插入、删除、修改等)
二、算法核心知识
(一)算法的定义与本质
通俗理解:解决问题的机械程序步骤,按步骤执行一定能得到结果。例如 “四则运算先乘除后加减”“从里往外脱括号” 都是算法。
严格定义:一系列将问题的输入转换为输出的计算或操作步骤。
(二)算法的分类与特征
分类:计算机算法与人工算法
部分问题无计算机算法。
部分问题的计算机算法与人工算法不同。
计算机算法的 5 大特征
输入:有外部提供的量作为输入。
输出:产生至少一个量作为输出。
确定性:每条指令清晰、无歧义。
有限性:每条指令执行次数和时间均有限。
可行性:每一步操作均可实现。
(三)算法的 3 大要素
数据:运算序列中作为运算对象和结果的数据。
运算:赋值、算术和逻辑运算等。
控制和转移:运算序列中的控制与转移逻辑。
(四)算法的描述语言
包括自然语言、数学语言、流程图、程序设计语言等。
(五)问题的求解过程(6 步)
问题的陈述:用科学规范语言准确描述问题
建立数学模型:分析问题,明确操作对象及关系,用数学语言描述
设计算法:根据数学模型设计计算机求解算法
算法的正确性证明:证明算法对所有合法输入,均能在有限次计算后产生正确输出
算法的程序实现:将算法正确编写为机器语言程序
算法分析:估算执行算法消耗的计算机资源
三、数据结构与算法的关系
核心公式:程序 = 算法 + 数据结构;算法 = 逻辑 + 控制
相互影响
数据结构为算法提供存储结构,算法依赖数据结构进行操作
数据结构直接影响算法的选择和效率,例如不同存储结构(顺序、链式)会导致算法执行速度、空间占用差异
算法的地位:算法是程序的灵魂
四、算法的评价标准
(一)好算法的 5 大特性
正确性:首要且最基本特性,能正确求解问题。
可读性:思路清晰、层次分明,便于阅读和修改。
健壮性:面对异常情况(非法数据、操作不当)能适当处理。
高效性:占用存储空间少,执行时间短。
有限性:指令执行次数和时间有限(与算法特征一致,是正确性和高效性的基础)。
(二)算法复杂度(评价高效性的核心指标)
1. 定义与分类
算法复杂度分为时间复杂度和空间复杂度,用于衡量算法在计算资源(时间、空间)消耗上的效率,核心关注 “输入规模 n 增长时,复杂度的变化趋势”。
2. 时间复杂度
定义:执行算法所需的计算工作量,与输入规模 n 相关
分析逻辑
忽略机器速度差异:聚焦算法本身的计算步骤,而非硬件性能
忽略小规模输入:仅关注 n 较大时的复杂度差异(小规模输入下,不同算法耗时差异可忽略)
基本指令:以算术指令、数据移动指令、控制指令为时间单位,例如:
int a = 1; 运行时间 1
if (a > 1) {} 运行时间 1
for (int i = 0; i
大 O 表示法(渐进上界)
定义:对于函数 g (n),O (g (n)) 是所有满足 “存在正常量 c 和 n₀,当 n≥n₀时,0≤f (n)≤cg (n)” 的函数 f (n) 的集合
作用:忽略常数因子和低阶项,聚焦复杂度的增长趋势,例如:
T(n)=3n+2 → O(n)
T(n)=3n²+4n+2 → O(n²)
T(n)=0.5n² → O(n²)
3. 空间复杂度
定义:算法执行所占用的内存空间,与输入规模 n 相关
计算规则:忽略常数因子,例如:
Array [100] :空间复杂度 O (1)(常数规模,忽略具体数值 100)
Array[N]:空间复杂度 O (N)(与输入规模 n 正相关)
int val = 1;:空间复杂度 O (1)(单个变量,常数空间)
4. 常见复杂度排序(按增长速度从慢到快)
常数阶 O (1)
指数阶算法性能极差:随 n 增大,时间 / 空间消耗急剧增长,实际应用中尽量避免。
1万+

被折叠的 条评论
为什么被折叠?



