数据结构简述[未完成]

未完成,会逐步完善的

复杂度分析

如何区分算法好坏 - 时间复杂度(代码结构),空间复杂度(数据结构)

时间复杂度:为了解决问题,程序中代码总的执行次数

空间复杂度:为了解决问题,所额外消耗的空间

如何计算时间复杂度

数据结构简述

线性 1对1结构

非线性 1对多,多对多结构

  • 线性
    • 链式存储 链表
    • 顺序存储 数组

位运算

链式存储

  1. 链表搜索,O(n)
  2. 链表添加
    1. 头添加,头删除 O(1),数据按照添加顺序倒序
    2. 中间添加删除,尾删除:O(n)

Demo 单项链表的实现

单项链表的倒序打印,递归概念,斐波那契数列

Demo 链表倒置

Demo 合并两个有序链表,合成一个有序的

Demo 单项链表是否有环,找到环的入口节点

Demo 复杂链表的复制

分治法,二分查找(前提:有序)

Demo 计算快速幂(分治法的典型应用)

stack FILI 先进后出

Demo 判断括号合法,{}{}{}{{}}[][][]

队列

哈希表

  1. 确定哈希散列函数:求整取余法
  2. 解决哈希冲突的方法
    1. 开放地址法
      线性探测
      线性探测的优化:装载因子
    2. 拉链法
      指针数组
      拉链与线性探测的优缺点:

Demo HashTable

线性结构完

字符串

KMP 查找子串

sunday 查找子串

  1. 满二叉树
  2. 完全二叉树
  3. 排序二叉树
  4. AVL
  5. 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(最长公共子序列)

最大流问题MaximumFlow

posted @ 2022-12-01 17:40  SpringBreath  阅读(35)  评论(0)    收藏  举报