学习数据结构的难点
1.涵盖知识非常多
2.刷题效率低
3.解决实际问题难度高
为什么要学习数据结构
数据结构是优秀工程师的基础:围绕系统的复杂性选择最优解
学习数据结构正确方法不是刷题,而是理解和掌握算法思维和原理,解决实际问题
复杂度f(n):衡量代码运行效率的重要度量因素
1.复杂度与具体常系数无关,O(n)=O(2n)=O(n)+O(n)
2.多项式复杂度相加时,取决于最高者
3.O(1)是一个特殊复杂度,它和输入量无关
时间复杂度与代码的结构设计高度相关,空间复杂度与代码数据结构的选择高度相关
数据结构:将时间复杂度转化为空间复杂度
程序= 数据结构+算法,数据结构是算法的基础
数据结构是一门研究数据组织方式的学科
数据结构:
1.线性结构:数据元素之间存在一对一的线性关系(数组、队列、链表和栈)
线性结构有两种不同的储存结构,顺序储存和链式储存(地址是否连续)
2.非线性结构:数据元素不是一对一关系(二维数组、多维数组、广义表、树结构、图结构)