算法 精简
二叉树
节点 Node {
左子节点 Left Node
右子节点 Right Node
父亲节点 Parent Node
}
树的相关概念
根节点:非空树处于最上层的唯一节点,其余节点都是它的子孙后代
节点的度:节点具有的孩子节点个数
叶子节点:度为0的节点
父子节点:直接相连的一对节点,处于上层的是父节点,处于下层的是子节点
兄弟节点:由同一个父节点生出的不同节点互称兄弟节点
节点层次:由根开始记为1层,其子节点为2层,孙子节点为3层……
节点深度:节点所在的层次数
树的深度/高度:树的最大层次数
节点高度:以节点为根的子树的深度/高度
有序树:以兄弟节点为根的子树交换位置得到的新树视作与原来的树不同的树
无序树:以兄弟节点为根的子树交换位置得到的新树视作与原来的树相同的树
满二叉树 ,非完全二叉树,完全二叉树
满二叉树:
- 所有叶子节点全部在最底层,且所有非叶子节点度都是2的树
完全二叉树:
如果二叉树中所有节点的编号都能与满二叉树中同样位置的节点编号一致,则该二叉树是一棵完全二叉树
查询方式:
红黑树
性质:
根为黑色
节点为红色或者是黑色
红色的两个子节点一定是黑色
从一个节点到另一个节点的黑色节点个数一定相同
每个叶子一定是黑色I(Null)
小左 大右
图结构
图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的。
常用术语:
术语 含义
顶点 图中的某个结点
边 顶点之间连线
相邻顶点 由同一条边连接在一起的顶点
度 一个顶点的相邻顶点个数
简单路径 由一个顶点到另一个顶点的路线,且没有重复经过顶点
回路 出发点和结束点都是同一个顶点
无向图 图中所有的边都没有方向
有向图 图中所有的边都有方向
无权图 图中的边没有权重值
有权图 图中的边带有一定的权重值
图的结构很简单,就是由顶点 V 集和边 E 集构成,因此图可以表示成 G = (V,E)
穷举法:
利用计算机本身的计算能力 ,将所有可以将问题解答的方式找出每一个可能的答案,,有点:可以看清每一个答案,,缺点:运算效率低,代码冗余度高
递推法:
利用数学的原理,将一个复杂的逻辑分散成多个部分去运算,然后将一部分运算的结果作为下一个部分的已知来进一步计算结果。
分治算法:
将要进行的问题分成若干个小问题,最终通过解决小问题的答案进行合并,得到最终问题的答案
快速排序算法:
先从序列中选取一个数,将其它的数按大小关系,比选取数大的放在右边,小的放在左边,完成一次排序,,然后再从左边右边为两个区间, 以相同的方式进行排序。
?为72
选择排序:
将序列从第一个数据进行选取,依次和后面的数进行比较,将比较后最小的放在第一个位置,以此类推,再次选取比较得到第二个,知道排序数据结束
插入算法:
依次将手中的数据,往序列中插入,通过比较的方式按一定顺序,逐个将手中数排列完全。
概率算法:
权重:
权重是一个相对的概念,是以某一指标作为基础进行分析,某一指标的权重,是指该指标在整体评价中的相对重要程度,强调的是因素或指标的相对重要程度,倾向于贡献度或重要性。设置权重的方法包括:1、主观经验法;2、主次指标排队分类法;3、专家调查法。
堆排序算法:
、
顺序查找:
顺序查找的查找过程为:从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,找到所查记录;反之,若直至第一个记录,其关键字和给定值比较都不等,则表明表中没有所查记录,查找不成功。
折半查找:
每一次从中间下标的数值与要查找的值进行比较,并反复比较进行查找
3.折半查找算法优点:
折半查找法的优点是比较次数少,查找速度快,平均性能好;
其缺点是要求待查表为有序表,且插入删除困难。
因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现