你好,欢迎来到你问人生何的博客园啊

数据结构-----软件设计师

上午占比10分 下午1大题

 

详情可以看我的笔记观感更好一点

笔记链接https://note.youdao.com/s/LQLP3cAw

 

线性表❤❤❤❤❤

线性表的定义

线性表的存储结构

顺序存储

 

 

对有序表n个元素进行顺序查找 其成功查找的平均查找长度是(在查找表中找到指定的关键码元素时,所进行比较的表中元素的个数):

假设从前往后找 找第n个,找到第一个 一次比较 第3个 三次比较

  • 一共比较1+2+3+..n 平均查找长度 n(1+n)

链式存储

单链表

 

含有头结点的单链表:

在链表中添加头结点以后 查找表中的某一元素仍然要从头指针出发,顺序找到目标元素或者失败时找到表尾为止,时间复杂度与表长成正比

与顺序表相比,采用链表存储的缺点是 数据之间的关系需要占用存储空间,导致存储密度不高

 

 

循环链表

 

单项循环链表:

尾指针的单项循环链表:

插入操作: 只需要知道插入的位置即可 即 我再t位置插入 只需要知道t的位置

s->next=t->next;

t->next=s;

t=s;

插入的时间复杂度是0(1)

要删除尾指针节点 :需要找到删除节点的前一个节点 ,但是注意此时这里单循环链表 ,我如果需要找到前面一个需要通过遍历 一个个往后遍历所以时间复杂度是O(n)

 

双向链表

顺序存储和链式存储对比

 

线性表的插入删除运算

队列和栈

栈的存储结构

简单

 

队列

队列的存储结构

循环队列

rear表示队尾元素指针len表示队列长度, 队列存储空间是M,则队头元素的指针是:如果指针-长度小于0,加上M后得到最终的坐标,如果大于0,说明这个值已经是坐标 使用%M将+M去掉

串:

除了串替换以外 其他运算都不会改变串种的内容 因此 在链表存储方式下 进行串替换最不方便

串的存储结构

串的模式匹配

解题思路代入具体数字

 

数组与矩阵形参❤❤

数组

数组考察存储地址的计算

a+i*len

 

矩阵

稀疏矩阵

 

常考稀疏矩阵在一维数组中存储 矩阵中对应的元素在一维数组中表示的位置

用带入的方法

 

广义表❤❤

 

 

KMP算法

懂了

 

 

哈希表

如果装填因子a定义为表中装入的记录数和表中的长度值比:那么a越大发生冲突的可能性就越大, 因为a表示哈希表被装满的程度 ,你装满了有新的进来就100%冲突

线性探测法

 

 

 

 

 

 

树与二叉树❤❤❤❤❤

树的定义与基本运算

二叉树

代入数字

二叉树的存储结构

 

 

节点数n与二叉树f(n)形态的关系式

fn=(2n)!/n!(n+1)!

例子

具有三个节点的二叉树有五种,可推测具有四个节点的二叉树有几种?

代入 得14种

 

考点:

二叉树用二叉链表表示 求空指针个数

代入 数字 画图

 

 

二叉树的遍历

一颗满二叉树使用log2m取整=log2n取整来判断mn两个节点是否在同一层

任何一颗二叉树终端节点 n0 度为2节点为n2

n0=n2+1

设一颗二叉树上叶子节点数为n0 单分支节点数 为n1

双分支节点数 为n2 总节点为n=n0+n1+n2

二叉排序树

 

查找二叉树

哈夫曼树

单支树

 

 

 

线索二叉树

平衡二叉树

最优二叉树

 

 

完全二叉树

除了最后一层以外 每一层上的节点都达到在最大值 在最后一层上只缺少右边的若干节点

 

 

 

树与森林

树的存储结构

树和森林的遍历

树 森林 二叉树的转换

 

❤❤

图的定义

 

完全图

 

 

顶点数决定了邻接矩阵的阶和邻接表中的单链表数目 无论是对无向图还是有向图 变数的多少决定了单链表的中的节点数 不影响邻接矩阵的规模,因此完全图使用邻接矩阵存储

 

无向图的邻接矩阵是一个对称矩阵,每条边都会表示两次因此矩阵种的非0数目wei2E(E为表示边的个数)

顶点数之和为边的两倍

 

 

有向图

 

当二维数组表示邻接矩阵图的存储结构时候 查找每个顶点的邻接点需要时间On2 其中n为途中顶点数

而当邻接表作图的存储结构时候e为无向图中变得数或有向图种弧的数,深度优先搜索遍历图的时间复杂度是O(n+e)

 

 

图的存储结构

 

 

邻接表

图的遍历

深度优先 先往下走 再往左走

广度优先 水平发展

可能是下午题

 

 

 

 

拓朴排序和关键路径

 

 

图的生成树和最小生成树

 

 

最短路径

排序与查找❤❤❤❤❤

静态查找表

顺序查找

折半查找

分块查找

动态查找表

二叉排序树

平衡二叉树

它或者一棵空树 或者具备以下性质的树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡树

 

B-树

定义

一个 m 阶的B树是一个有以下属性的树

  1. 每一个节点最多有 m 个子节点
  2. 每一个非叶子节点(除根节点)最少有 ⌈m/2⌉ 个子节点,⌈m/2⌉表示向上取整。
  3. 如果根节点不是叶子节点,那么它至少有两个子节点
  4. 有 k 个子节点的非叶子节点拥有 k − 1 个键
  5. 所有的叶子节点都在同一层

看图中孩子最多的那个节点有几个孩子就是几阶b树

哈希表及其查找

需要减少冲突就要设法使哈希函数尽可能均匀地把关键字映射道存储区的各个存储地址上没注意可以提高查找效率

 

排序

直接插入排序

正序比较次数最少 ,逆序排序次数最多

希尔排序

快速排序

堆排序

归并排序

基排序

 

内部排序的比较和选择

外部排序

 

 

时间复杂度和空间复杂度❤❤❤❤❤

对n个基本有序的整数进行排序 若采用插入排序法 则时间和空间复杂度为0(n)和0(1)

采用快速排序时间和空间复杂度为O(n2)和O(1)

 

 

算法基础和常见算法❤❤❤❤❤

区分各个算法的使用场景

动态规划法是寻求全局最优解,

贪心算法是寻求局部最优解,但全局不一定是最优

贪心算法不能保证求得0-1背包问题的最优解

迪杰斯特拉算法 霍夫曼编码是贪心算法

 

 

N 皇后问题 8×8棋盘不可以在同行同列 相同对角线上放两个皇后

一般 该问题居于约束条件来求问题的可行解

该问题不能划分为子问题来求解 所以不用分治法

由于不求最优解 不适用于最优子结构 不适用动态规划法和贪心法求解

 

系统搜索法 --回溯法可以解决

又称试探法 按选优条件向前搜索但是探索到某一部的时候发现原先选择不达标不优秀 就退回重新选择 路走不通就退回的就是 回溯法

 

遗传算法采用模拟生物进化的三个基本过程"繁殖,(选择)交叉(重组) 变异(突变)

 

posted @   你问人生何  阅读(85)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义

本站勉强运行 1953 天 17 小时 32 分 37 秒

点击右上角即可分享
微信分享提示