数据结构刷新知识总结,为了与题目分开,特地在这里开一篇博客

news2024/11/15 15:24:34

文章目录

  • 二叉树、树、森林的转换
  • 二叉树的五个特性
  • 常用算法总结
  • 常用算法详解
  • 图的概念
  • 排序
  • 哈希
  • 查找

二叉树、树、森林的转换

  1. 树转二叉树
    在这里插入图片描述
  2. 二叉树转树
    在这里插入图片描述
  3. 森林转二叉树
    在这里插入图片描述
  4. 二叉树转森林
    在这里插入图片描述

二叉树的五个特性

  • 性质1:在二叉树的第i层上至多有2i-1个结点
  • 性质2:深度为k的二叉树至多有2k-1个结点
  • 性质3:具有n个节点的完全二叉树深为log2(n+1)
  • 性质4:度为 0 的叶子结点总是比度为 2 的结点多一个n0 = n2 + 1
  • 性质5:完全二叉树中,结点i的左孩子是2i,右孩子是2i+1

常用算法总结

  • 最小生成树:Prim算法、Kruskal算法
  • 最短路径:Dijkstra算法、Floyd算法、DFS算法、BFS算法、Ford算法
  • 拓扑排序:AOV网
  • 关键路径:AOE网

常用算法详解

  1. 广度优先遍历BFS
    在这里插入图片描述

  1. 深度优先遍历
    在这里插入图片描述

  1. Prim算法
    在这里插入图片描述

  1. Kruskal算法
    在这里插入图片描述

  1. Dijkstra算法:实现单源最短路径问题
  1. 算法介绍:Dijkstra算法应用了贪心算法思想,是目前公认的最好的求解最短路径的方法。
  2. 辅助数组
    dist[]:记录从源点v0到其他各顶点当前的最短路径长度。
    path[]:path[i]表示源点到顶点i之间的最短路径的前驱结点。
  3. 算法思想:
    设置一个集合S记录已求得的最短路径的顶点,初始时把源点v~0~放入S; 集合S每并入一个新顶点v ~i~ ,都要修改源点v ~0 ~​到集合V-S中顶点当前的最短路径长度值;
  4. 具体实例

在这里插入图片描述


  1. 拓扑排序

算法思想

  1. 从AOV网中选择一个没有前驱的顶点并输出
  2. 从网中删除该顶点和所有以它为起点的有向边
  3. 重复步骤1和步骤2直到当前AOV网为空

  1. 关键路径

算法思想

  • 从源点出发,令ve(源点)=0,按拓扑排序求其余顶点的最早发生时间ve();
  • 从汇点出发,令vl(汇点)=ve(汇点),按逆拓扑排序求其余顶点的最迟发生时间vl();
  • 根据各顶点的ve()值求所有弧的最早开始时间e();
  • 根据个顶点的vl()值求所有弧的最迟开始时间l();
  • 求AOE网中所有差额d(),找出所有d()=0的活动构成关键路径

具体实例
在这里插入图片描述

图的概念

  • 完全图:对于无向图来说有n(n-1)/2条边,对于有向图来说有n(n-1)条边
  • 连通图:对于无向图来说,符合完全图的无向图就是连通图
  • 强连通图:对于有向图来说,符合完全图的有向图就是强连通图

存储结构
在这里插入图片描述

注意:下标从1开始

  1. 堆:可以理解为顺序存储的完全二叉树
  2. 大根堆:完全二叉树,根>=左右
  3. 小根堆:完全二叉树,根<=左右
  4. 堆排序分为两个过程:堆初始化、输出堆顶后调整新堆
  1. 自下而上算法

排序

在这里插入图片描述

  1. 直接插入排序
    在这里插入图片描述
  2. 折半插入排序

对直接插入排序算法的改进,在对有序部分进行折半查找并插入

  1. 希尔排序
    在这里插入图片描述

  2. 冒泡排序
    在这里插入图片描述

  3. 快速排序
    在这里插入图片描述

  4. 简单选择排序
    在这里插入图片描述

  5. 堆排序

  6. 归并排序
    在这里插入图片描述

  7. 基数排序
    在这里插入图片描述

哈希

  1. 散列函数
  • 直接定址法:H(key)=a*key+b
  • 除留余数法:H(key)=key%p
  • 数字分析法:抽取关键字中分布较为均匀的若干位作为散列地址
  • 平方取中法:关键字的平法值中间几位作为散列地址
  1. 处理冲突
  1. 线性探测法:Hi=(Hash(key)+ d i d_i di)mod m,其中di=0,1,2,3…
  2. 平方探测法:Hi=(Hash(key)+ d i d_i di)mod m,其中di=0, 1 2 1^2 12,- 1 2 1^2 12 2 2 2^2 22,- 2 2 2^2 22
  3. 伪随机序列法:Hi=(Hash(key)+ d i d_i di)mod m,其中di=伪随机序列法
  4. 双散列法 : Hi=(Hash(key)+i* d i d_i di)mod m,其中di= H a s h 2 Hash_2 Hash2(key)
  5. 链接法:把所有的同义词存储在一个线性链表中,这个线性链表可以由其散列地址唯一标识。
  1. 散列查找
  1. 检测表中地址为Addr的位置上是否有记录,若无记录,返回查找失败;
    若有记录,比较Addr对应元素与关键字,如相等则返回查找成功的标记;
    否则执行步骤2
  2. 用给定的冲突处理方法计算下一个散列地址,并把Addr置为此地址,转入步骤1

查找

1. 线性结构

  • 顺序查找
  • 折半查找
  • 分块查找:块内无序,块之间有序。即第一个块中的最大关键字小于第二个块中的所有记录的关键字

2. 树形结构

  • 二叉排序树BST
  • 二叉平衡树
  • 红黑树
  • B树
  • B+树

3. 散列结构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android动态获取权限(详细教程附代码)

Android动态获取权限概述动态获取权限具体实现layout布局代码回调函数onRequestPermissionsResult权限判断工具类清单文件方式一&#xff1a;懒汉式方式二&#xff1a;饿汉式概述 如果是android6.0以下的版本&#xff0c;只需要在manifest声明对应的权限即可。但是这样会大大降…

美颜sdk动态贴纸的实现流程

随着移动互联网时代的到来&#xff0c;各式各样的 APP层出不穷&#xff0c;从最初的微信、 QQ到如今的抖音、快手等等&#xff0c;再到如今的微博、小红书等等&#xff0c;各式各样的 APP不断涌现。从最开始简单的图片展示到视频聊天&#xff0c;再到现如今丰富多样的各种动态贴…

rip题解

1.查看文件保护机制 使用的是新版本的checksec 2.拖入IDA分析 查壳 是一个64文件&#xff0c;拖入64位IDA 这个文件就是我们要攻击的服务器中的一个进程的代码&#xff0c;进程就是一个正在运行的程序 分析敏感函数 打开字符串窗口 跟进&#xff0c;光标点在command&#x…

Linux: ARM GIC只中断CPU 0问题分析

文章目录1. 前言2. 分析背景3. 问题4. 分析4.1 ARM GIC 中断芯片简介4.1.1 中断类型和分布4.1.2 拓扑结构4.2 问题根因4.2.1 设置GIC SPI 中断CPU亲和性4.2.2 GIC初始化&#xff1a;缺省的CPU亲和性4.2.2.1 boot CPU亲和性初始化流程4.2.2.1 其它非 boot CPU亲和性初始化流程5.…

【微信小程序】-- 全局配置 -- window - 下拉刷新 上拉触底(十六)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

模型实战(6)之Alex实现图像分类:模型原理+训练+预测(详细教程!)

Alex实现图像分类:模型原理+训练+预测 图像分类或者检索任务在浏览器中的搜索操作、爬虫搜图中应用较广,本文主要通过Alex模型实现猫狗分类,并且将可以复用的开源模型在文章中给出!!!数据集可以由此下载:Data本文将从以下内容做出讲述: 1.模型简介及环境搭建2.数据集准…

微纳制造期末复习

章节分为六个模块&#xff1a; 1. 微纳制造中的材料 2.光刻技术 3.微纳制造中使用的技术 4.刻蚀 5.沉积 7.微纳刻蚀 根据导电性区分材料&#xff1a;导体&#xff0c;半导体&#xff0c;绝缘体 晶体&#xff1a;长程有序 多晶&#xff1a;短程有序 非晶&#xff1a;无序…

八 SpringMVC【拦截器】登录验证

目录&#x1f6a9;一 SpringMVC拦截器✅ 1.配置文件✅2.登录验证代码&#xff08;HandlerInterceptor&#xff09;✅3.继承HandlerInterceptorAdapter&#xff08;不建议使用&#xff09;✅4.登录页面jsp✅5.主页面&#xff08;操作页面&#xff09;✅6.crud用户在访问页面时 只…

【算法】PatchMatch立体匹配算法_原理解析

目录 前言 原理解析 1.倾斜支持窗口&#xff08;Slanted Support Windows&#xff09; 什么是视差平面&#xff1f; 为什么视差和像素坐标点之间的关系可以解释为平面方程&#xff1f; 视差平面的通用参数方程和点加法向量方程 什么是倾斜支持窗口&#xff1f; 2.基于倾…

宏基因组鉴定病毒流程中需要的生物信息工具

谷禾健康 许多流行病的爆发都是病毒引起的&#xff0c;面对新的传染性基因组出现的最佳策略是及时识别&#xff0c;以便于在感染开始时立即实施相应措施。 目前可用的诊断测试仅限于检测新的病理因子。适用于同时检测存在的任何病原体的高通量方法可能比使用基于当前方法的大量…

Mel Spectrogram

参考链接&#xff1a; Short-time Fourier transform - MATLAB stft- MathWorks 中国 https://medium.com/analytics-vidhya/understanding-the-mel-spectrogram-fca2afa2ce53 a spectrogram as a bunch of FFTs stacked on top of each other. 给出hop length后&#xff0…

TMP耗时较高的优化问题

1&#xff09;TMP耗时较高的优化问题 ​2&#xff09;Unity重载Object后&#xff0c;如何判定物体是否为空 3&#xff09;SRP Batch在添加unity_SpecCube后的问题 4&#xff09;堆内存会持续上升&#xff0c;如何用UWA报告来分析 这是第326篇UWA技术知识分享的推送&#xff0c;…

大话数据结构-栈

1 概述 栈&#xff08;Stack&#xff09;是限定仅在表尾进行插入和删除操作的线性表。 允许插入和删除的一端称为栈顶&#xff08;top&#xff09;&#xff0c;另一端称为栈底&#xff08;bottom&#xff09;&#xff0c;不含任何数据元素的栈称为空栈&#xff0c;栈又称为后进…

界面控件DevExpress WinForm——轻松构建类Visual Studio UI(三)

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

MyBatisPlus Study Notes

文章目录1 MyBatisPlus概述1.1 MyBatis介绍1.2 MyBatisPlus特性2 标准数据层开发2.1 MyBatisPlus的CRUD操作API2.2 分页功能接口实现2.2.1 config&#xff08;配置层&#xff09;拦截器实现2.2.2 Dao(Mapper)数据访问层&#xff08;CRUD&#xff09;操作2.2.3 Junit单元测试进行…

新版本GPU加速的tensorflow库的配置方法

本文介绍在Anaconda环境中&#xff0c;配置可以用GPU运行的Python新版tensorflow库的方法。 在上一篇文章Anaconda配置Python新版本tensorflow库&#xff08;CPU、GPU通用&#xff09;的方法&#xff08;https://blog.csdn.net/zhebushibiaoshifu/article/details/129285815&am…

【分布式】10张图带你彻底搞懂限流、熔断、服务降级

文章目录1 限流1.1 限流指标1.1.1 TPS1.1.2 HPS1.1.3 QPS1.2 限流方法1.2.1 流量计数器1.2.2 滑动时间窗口1.2.3 漏桶算法1.2.4 令牌桶算法1.2.5 分布式限流1.2.6 hystrix限流1.2.6.1 信号量限流1.2.6.2 线程池限流2 熔断2.1 断路器的状态2.2 需要考虑的问题2.3 使用场景3 服务…

游戏开发是个“坑”,而且是个“天坑”

本文首发于CSDN公众号 作者 | 开发游戏的老王 责编 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 各位游戏开发者大家好&#xff0c;我是开发游戏的老王&#xff0c;一名游戏开发者同时也是一名高校游戏方向的主讲教师&#xff0c;从事游戏开发及相关教…

HTTP缓存从入门到踹门

1 与缓存相关的字段Expires&#xff1a;缓存的绝对过期时间Cache-Control&#xff1a;缓存的相对过期时间Last-Modified&#xff1a;缓存上一次修改的时间&#xff08;服务端保存&#xff09;If-Modified-Since&#xff1a;缓存上一次修改的时间&#xff08;客户端保存&#xf…

第十一届蓝桥杯省赛——2解密

题目&#xff1a;【问题描述】小明设计了一种文章加密的方法&#xff1a;对于每个字母 c&#xff0c;将它变成某个另外的字符 Tc。下表给出了字符变换的规则&#xff1a;字母cTc字母cTc字母cTc字母cTcaynlAYNLbxogBXOGcmpoCMPOddquDDQUearfEARFfcssFCSSgitzGITZhkupHKUPinvwINV…