1.什么是数据结构
数据结构 = 数据 + 结构
数据结构的定义:
数据结构是计算机中存储、组织数据的方式(保存了一些互相存在关系的数据的集合)
用途:数据的组织以及操作
组织:数据在内存中的状态【连续、不连续、线性、非线性】
操作:增删改查【效率】
数据结构的合适与否直接影响程序设计的难易程度
2.逻辑结构与物理结构
逻辑结构:脑海中数据的主观结构
物理结构:内存中数据的客观结构
eg1:数组存储中arr[0] = 10, arr[1] = 100,在物理结构上100在10的后面,在逻辑结构上100不一定在10的后面。
eg2:学号为1的同学不一定要坐在学号为2的同学后面。学号满足逻辑连续,但座位不满足物理连续。
3.数据结构基础
(1)线性表
①顺序表
②链表
(2)栈与队列
①栈
②队列
(3)排序
①基础排序
②快速排序
③归并排序
4.数据结构进阶
(1)树型结构基础
①二叉树
②二叉查找树
(2)树型结构应用
①二叉堆
②并查集
(3)哈希表
5.学习方法
主要注重 逻辑能力 和 实现能力
不会写—>看懂别人写—>模仿—>自己尝试
1.画图模拟
2.先思考再看题解
3.出bug先调试,模拟调式
6.时间复杂度
时间复杂度是一个多项式函数,表示一段程序的运行时间。一般假设每条语句的运行时间为一个单位【O(1)】
大O表示法:一种描述渐进运行时间级别的方法。
表示规则:对于一个表示运行时间的多项式而言,舍弃其 非最高项 和 最高项系数。【3n^2 + 5n + 10 = O(n^2)】
时间复杂度的分析要点在于最内层循环的执行次数,而不在于循环的层数
7.空间复杂度
和时间复杂度相似,空间复杂度也是一个多项式函数,表示一段程序运行时需要的存储空间大小。也用大O表示法来表示渐进的空间复杂度。
eg:空间复杂度为O(n * m)
arr[n][m]; //额外的辅助数组
8.常见复杂度级别
复杂度级别 | 复杂度举例 |
---|---|
常数级别 | O(1) |
对数级别 | O(log(n)) |
根号级别 | O(sqrt(n)) |
线性级别 | O(n)、O(m)、O(n + m) |
幂次级别 | O(n2)、O(n3) |
指数级别 | O(2^n) |
阶乘级别 | O(n!) |
关于线性表各部分的解析与代码演示将持续更新