# | title | 备注 |
---|---|---|
Stack | 实现栈结构 | |
进制转化问题 | stack 习题 | |
Queue | 实现队列结构 | |
回文检查器 | queue 习题 | |
Linked | 实现单向链表 | |
Set | 构建数据集合 | |
交集、并集、差运算 | set 习题 | |
Dict | 构建字典类 | |
HashTable | [构建散列表] | |
[] | HashTable 习题 | |
Sort | 基本排序算法 | |
字符组合 | ||
Tree | 二叉搜索树 | |
搜索问题 | 迷宫寻路 | |
N皇后问题 | ||
取N个数和为M | ||
Fibonacci | 实现与优化 | |
AVL 树 | Tree 习题 | |
红黑树 | Tree 习题 | |
Graph | [构建图类] | |
[] | Graph 习题 |
@TODO:
数据结构是相互之间存在一种或多种特定关系的数据元素的集合 -- 《大话数据结构》
逻辑结构
物理结构
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作 --《大话数据结构》
算法的时间复杂度也称算法的时间度量,记作: T(n)=O(f(n))。它表示随着问题规模n的增大,算法的执行时间的增长率与f(n)的增长率相同,称为算法的渐进时间复杂度,简称时间复杂度。其中f(n)是问题规模n的某个函数。
用大写O()
来体现算法的时间复杂度的记法,我们称为大O记法。
执行次数函数 | 阶 | 术语表示 |
---|---|---|
10 | O(1) | 常数阶 |
O(n) | 线性阶 | |
O( | 平方阶 | |
O( | 对数阶 | |
O( | nlogn阶 | |
O( | 立方阶 | |
O( | 指数阶 |
时间复杂度所耗时时间大小排序
存储算法所需要的空间,记作: S(n)=O(f(n)),其中n为问题规模,f(n)即为语句关于n所占存储空间的函数
零个或多个元素的有限序列
表示用一段地址连续的存储单元依次存储线性表的数据元素
即数组
优点 | 缺点 |
---|---|
方便存取 | 查找、删除需移动大量元素 |
无需存储元素之间逻辑而增加的额外空间 | 容易造成空间“碎片” |
### 链式存储结构 |
元素在内存存储是非连续的,每个元素由一个存储元素本身节点和一个指向下一个元素的引用组成