数据结构简述[未完成]
未完成,会逐步完善的
复杂度分析
如何区分算法好坏 - 时间复杂度(代码结构),空间复杂度(数据结构)
时间复杂度:为了解决问题,程序中代码总的执行次数
空间复杂度:为了解决问题,所额外消耗的空间
如何计算时间复杂度
数据结构简述
线性 1对1结构
非线性 1对多,多对多结构
- 线性
- 链式存储 链表
- 顺序存储 数组
位运算
链式存储
- 链表搜索,O(n)
- 链表添加
- 头添加,头删除 O(1),数据按照添加顺序倒序
- 中间添加删除,尾删除:O(n)
Demo 单项链表的实现
单项链表的倒序打印,递归概念,斐波那契数列
Demo 链表倒置
Demo 合并两个有序链表,合成一个有序的
Demo 单项链表是否有环,找到环的入口节点
Demo 复杂链表的复制
分治法,二分查找(前提:有序)
Demo 计算快速幂(分治法的典型应用)
栈
stack FILI 先进后出
Demo 判断括号合法,{}{}{}{{}}[][][]
队列
哈希表
- 确定哈希散列函数:求整取余法
- 解决哈希冲突的方法
- 开放地址法
线性探测
线性探测的优化:装载因子 - 拉链法
指针数组
拉链与线性探测的优缺点:
- 开放地址法
Demo HashTable
线性结构完
字符串
KMP 查找子串
sunday 查找子串
树
- 满二叉树
- 完全二叉树
- 排序二叉树
- AVL
- RBT
Demo 前中后序遍历,递归写法
Demo CBT(完全二叉树)的创建
Demo 层序遍历,按照从上到下,从左到右,依次遍历
Demo 前中后序遍历,非递归写法
BST(排序二叉树)
Demo 实现
AVL(平衡二叉树)
Demo 实现
左右旋
RBT
性质:
Demo RBT 查找,添加,删除
B树
多路平衡搜索树
性质:
Demo 添加,删除
B+树
性质:
Demo 添加,删除
TrieTree字典树
字符串:查找、计数、排序
BinaryGrayCode格雷码
树end
图
创建 邻接矩阵
图的遍历
DFS(深度优先遍历)
BFS(广度有限遍历)
最小生成树
克鲁斯卡尔算法 Kruskal algorithm
最小生成树
求连通网的最小生成树的方法
普里姆算法 Prim
最小生成树
在加权连通图里搜索最小生成树
迪杰斯特拉算法
最短路径
解决的是有权图中最短路径问题
拓扑排序 TopologicalSort
有向无环图DAG
数据结构end
算法
排序(10个)
BubbleSort冒泡
优化
SelectSort选择排序
InsertSort插入排序
ShellSort希尔排序
优化
CountingSort计数排序
优化
QuickSort 快速排序
MergeSort 归并排序
HeapSort 堆排序
BucketSort 桶排序
RadixSort 基数排序
DEOM 排序总结表格
TopK问题
DP
动态规划,求最优解,空间换时间,时空权衡问题
状态转移方程
DEMO 初级(一维)凑钱问题,背包问题 例:最长递增子序列
DEMO 中级(二维)捡苹果,矩阵,列举状态转移方程
DEMO 中高级(带附加条件的二维)LCS(最长公共子序列)

浙公网安备 33010602011771号