常见数据结构
一. 数据结构概述、栈、队列
1. 数据结构概述


2. 栈数据结构的执行特点



3. 常见数据结构之队列



二. 常见数据结构之数组
- 数组它就是内存中的一块儿连续区域。
- 数组变量存的是数组在堆内存当中的起始地址。
- 数组查询任意索引位置的值耗时相同,数组根据索引查询速度快。
- 数组是一种根据索引查询快,增删慢的模型。
- 数组增删元素要对元素进行移位,甚至可能要创建新数组。

三. 链表
- 链表中的每个元素节点首先是包含了自己的节点的地址,每个元素节点的内部包含了自己的数据值和下一个元素的地址。

- 头地址指向链表中的第一个元素。

- 链表只是增删那一刻相对来说比较快,增删数据要找到这个数据才能删,找的过程也就是查询的过程还是比较慢的。


链表的分类:
- 单向链表:只能从前往后找。
- 双向链表:从前可以往后找,从后也可以往前找。有个头地址,有个尾地址,头可以往后找,尾可以往前找。Java中双链表用的比较多。增删首尾元素的速度特别快。因为双链表可以直接定位首尾元素。
- 结论:数组根据索引查元素是最快的,而双链表增删首尾元素的速度是最快的。

四. 二叉树和二叉查找树
- 二叉树和二叉查找树是我们后面一些特殊集合的底层数据结构。
- 二叉树是包含一个父节点,父节点产生一个左节点,还有一个右节点。每个节点最多只能有两个子节点,分别是左子节点和右子节点。
- 如果是根节点,它的父节点地址值就为null。

放了数据的二叉树:

二叉查找树:
- 二叉查找树它小的会往左边走,大的会往右边走。
- 二叉查找树它是一种二分查找的算法,目的:为了提高检索数据的性能。
- 二叉查找树又称二叉排序树或者二叉搜索树。
- 因为二叉查找树它小的会往左边走,大的会往右边走,因此左子树上所有节点的值都小于根节点的值,右子树上所有节点的值都大于根节点的值。
- 普通二叉树不怎么用,开发中用的最多的还是二叉查找树。

二叉查找树节点添加的一个机制:
- 规则:小的存左边,大的存右边,一样的不存。
- 将7作为根节点,4比7小往左边走,10比7大往右边走。
- 二叉查找树是一个增删改查都挺快的一个数据结构,相对来说比较完美,包括后续数据库检索数据也会用到这种数据结构。


五. 平衡二叉树(比较完美的一种二叉树结构)
二叉查找树存在的问题:

-
我们发现排好之后这个二叉查找树相当于是一个链表,而链表的话查询速度就慢了。
- 问题:出现瘸子现象,导致它的查询性能与单链表一样,查询速度变慢!

- 我们希望这个树它能在满足二叉树的规则之上,能够尽量的矮小,因为树越矮,去搜索的深度就会越短,可以提高检索的性能。
- 而平衡二叉树的目的就是为了把这个数做的尽量矮小,数据的分布尽量的均匀。

如何去满足成为一颗平衡二叉树:
- 平衡二叉树要求任意节点的左右两个字数的高度差不超过1,这样可以使元素分布的尽量均匀,把树做的尽量矮小。


- 思路:左边高,右拉。右边高,左拉。
- 左边高,右拉,右拉不行,就放弃右拉,先以不平衡的那个点左拉再整体右拉,反之亦然。

案例:使1234567成为一颗平衡二叉树: 4 2,6 1,3,5,7

六. 红黑树
- 红黑树与平衡二叉树的目的一样,都是为了提高数据的增删改查的性能。

- 红黑规则:黑红黑红交替的。
- 红黑树的每一个节点要多一个字段值来标记它是什么颜色。后面去看Java底层代码也能看到,有些是基于红黑树的,它的节点里面是有这种red,black这样的属性的。
- 路径算法:每条路径均包含相同数目的黑色节点。

怎样去通过红黑规则来保持平衡?



相关文章:
常见数据结构
一. 数据结构概述、栈、队列 1. 数据结构概述 2. 栈数据结构的执行特点 3. 常见数据结构之队列 二. 常见数据结构之数组 数组它就是内存中的一块儿连续区域。数组变量存的是数组在堆内存当中的起始地址。数组查询任意索引位置的值耗时相同,数组根据索引查询速度快。…...
Mycat
Mycat 1.概述 1.Mycat是数据中间件2.中间件:连接软件组件和应用的计算机软件,便于软件和各部件的交互3.数据中间件:连接Java应用程序与数据库的软件2.适用场景 1.Java与数据库紧耦合(直接连接)2.高访问量高并发对数据库压力(集群)3.读写请求数据不一致(读写分离+主从复制)3.…...
Java 编写Vue组件(VueGWT的初尝试)
在之前,我曾写过这样的文章《不会前端没事,用GWT Boot和Spring Boot构建Web程序》,这篇文字使用的Domino UI来做前端页面,由于现在更流行VUE,并且VUE的页面更具现代化,所以我尝试了一下VueGWT。 VueGWT 有…...
【第二章 @RequestMapping注解(value,method,params属性),springMVC支持ant风格的路径,支持路径中的占位符】
第二章 RequestMapping注解(value,method,params属性),springMVC支持ant风格的路径,支持路径中的占位符 1. RequestMapping注解: (1) RequestMapping注解的作用就是将请…...
QML Text详解
1.简介 文本项可以显示普通文本和富文本。 2.示例 示例1:一个简单的text,可以设置字体颜色、大小等。 Window {visible: truewidth: 400height: 400title: qsTr("Hello World")Rectangle{width: 200height: 200border.width: 2Text {text: …...
xxl-job启用https访问
一、准备证书 1.进入想要生成证书的目录 2.在路径中输入cmd,点击回车 (1) (2) 3.输入命令keytool -genkeypair -alias "boot" -keyalg "RSA" -keystore "seek.keystore" 4.输入信息,…...
2023FL Studio最新中文版电子音乐、混音和母带制作DAW
水果具有独特的底层逻辑,其开创了编曲“块”的思维。用FL Studio编曲的流程是在把一个样式编辑好,然后将编辑好的样式当做音频块,在播放列表中像“搭积木”一样任意编排,形成一首歌,这种模式非常利于电子音乐编曲。 2…...
pytorch 35 yolov5_obb项目解读+使用技巧+调优经验(提升map)
yolov5_obb是一个用于旋转框预测的开源项目,项目地址为https://github.com/hukaixuan19970627/yolov5_obb。在使用yolov5_obb进行训练时,可能存在训练后精度不达标。使用yolov5_obb项目一定要对yolov5_obb的基本实现和关键部分要有所了解,同时对于使用过程中的参数设置,数据…...
OpenMv H7 口罩识别--毕业设计学习记录
刚开始都不知道自己的摄像头是OpenMv H7的还是OpenMv H7 Plus来的(白嫖实训室的,其实大概率猜到是H7来的,主要是不死心),后面问了一下ChatGPT。 总结大概就是: 1、都是STM32H743 主控,但是频率的MCU(480MHz…...
有什么比较好的bug管理工具?5款热门工具推荐
工具再优秀,适合自己才最重要。 为尽量讲透这个问题,本文的行文结构我先整理如下: 1、为什么需要bug管理工具? 2、好的bug管理工具的标准是什么? 3、好的bug管理工具推荐(5款) 4、如何挑选适合…...
第五章 opengl之摄像机
OpenGL摄像机摄像机/观察空间Look At矩阵自由移动移动速度视角移动欧拉角鼠标输入缩放补充:摄像机类摄像机 OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的…...
nginx配置详解(容器、负载)—官方原版
一、概述本指南对nginx进行了基本介绍,并描述了一些 可以用它完成的简单任务。 据推测,nginx已经安装在阅读器的机器上。 本指南描述了如何启动和停止nginx,并重新加载其 配置,解释结构 的配置文件,并描述了如何设置 n…...
2023年中职网络安全竞赛——CMS网站渗透解析
需求环境可私信博主 解析如下: CMS网站渗透 任务环境说明: 服务器场景:Server2206(关闭链接) 服务器场景操作系统:未知 1.使用渗透机对服务器信息收集,并将服务器中网站服务端口号作为flag提交; Flag:8089...
SQL 窗口函数详解
SQL窗口函数详解 窗口函数的主要作用是对数据进行分组排序、求和、求平均值、计数等。 一、窗口函数的基本语法 <分析函数> OVER ([PARTITION BY <列清单>] ORDER BY <排序用列清单> [ROWS BETWEEN 开始位置 AND 结束位置])理解窗口函数的基本语法ÿ…...
Android 12系统源码_SystemUI(六)显示和隐藏最近任务
前言 Android12对最近任务做了调整,将原本处于SystemUI模块的最近任务转移到了Launcher3QuickStep应用中。 本篇文章我们会结合源码一起来梳理一下最近任务的显示流程。 一、SystemUI模块显示最近任务的相关代码 1、在SystemUI模块调用CommandQueue的showRecentA…...
Docekr三剑客之 Docekr compose
写在前面 Docker三剑客Docker Compose、Docker Machine、Docker Swarm分别是Docker官方开源的三个项目。有着不同的功能: Docker Compose负责实现对 Docker 容器集群的快速编排Docker Machine负责在多种平台上快速安装 Docker 环境Docker Swarm提供 Docker 容器集…...
企业是否具备等保测评资质在哪里查?怎么查?
为了规范等保相关业务办理流程,确保等保业务顺利办理,保障企业合法权益,政策规定,只有取得等保测评资质机构方可办理等保测评业务。因此很多人在问,企业是否具备等保测评资质在哪里查?怎么查? …...
Spacedesk软件推荐,让你的平板也变成电脑的副屏
我的设备: 电脑:戴尔G15 5511、i7-11800H、Windows 11、RTX3060 平板:荣耀V6、麒麟985、安卓10、分辨率2000*1200(手机也行,我用的平板) 实际使用: 先给放一张实际使用的照片 可以让平板变成电脑的副屏…...
Vue 3.0 组合式API 介绍 【Vue3 从零开始】
提示 在阅读文档之前,你应该已经熟悉了这两个 Vue 基础和创建组件。 在 Vue Mastery 上观看关于组合式 API 的免费视频。 通过创建 Vue 组件,我们可以将接口的可重复部分及其功能提取到可重用的代码段中。仅此一项就可以使我们的应用程序在可维护性和…...
【算法数据结构体系篇class13、14】:贪心算法思想
一、贪心算法概念贪心算法概念:1)最自然智慧的算法2)用一种局部最功利的标准,总是做出在当前看来是最好的选择3)难点在于证明局部最功利的标准可以得到全局最优解4)对于贪心算法的学习主要以增加阅历和经验…...
Perplexity×NEJM文献交叉验证协议(NIH资助项目内部文档首次公开:含4层可信度打分矩阵与人工校验SOP)
更多请点击: https://intelliparadigm.com 第一章:PerplexityNEJM文献交叉验证协议的起源与战略意义 PerplexityNEJM文献交叉验证协议并非传统意义上的软件接口规范,而是一种面向临床研究可信度增强的元认知对齐框架。其诞生源于2023年大型语…...
Laravel DDD架构实践:使用Neuron Core构建可维护业务系统
1. 项目概述:一个为Laravel打造的现代化神经元网络核心如果你正在用Laravel构建一个中大型应用,并且已经受够了在控制器里塞满几百行业务逻辑,或者在模型里写满各种scope和accessor,让它们变得臃肿不堪,那么neuron-cor…...
在ubuntu上为nodejs后端服务接入taotoken多模型api的步骤
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在 Ubuntu 上为 Node.js 后端服务接入 Taotoken 多模型 API 的步骤 为后端服务集成大模型能力是现代应用开发的常见需求。如果你在…...
Dism++终极指南:5个核心功能让Windows系统优化变得简单快速
Dism终极指南:5个核心功能让Windows系统优化变得简单快速 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language Dism是一款基于微软DISM技术开发的强大Win…...
青龙脚本自动化:五款实用脚本助你轻松管理日常任务
青龙脚本自动化:五款实用脚本助你轻松管理日常任务 【免费下载链接】huajiScript 滑稽の青龙脚本库 项目地址: https://gitcode.com/gh_mirrors/hu/huajiScript 在当今快节奏的数字时代,自动化工具已成为提升效率的必备利器。如果你正在寻找一款能…...
如何快速将Figma设计文件转换为结构化JSON数据:完整指南
如何快速将Figma设计文件转换为结构化JSON数据:完整指南 【免费下载链接】figma-to-json 💾 Read/Write Figma Files as JSON 项目地址: https://gitcode.com/gh_mirrors/fi/figma-to-json 在当今的设计开发工作流中,Figma已成为UI/UX…...
QT实战:利用QAxObject与QAxWidget实现Office文档自动化,从数据填充到格式定制
1. 为什么需要Office文档自动化? 在企业日常运营中,文档处理是绕不开的环节。我见过太多同事每天花几个小时手动复制粘贴数据到Word报告和Excel表格里,不仅效率低下,还容易出错。想象一下,财务部门每月要生成上百份报…...
构建可靠AI智能体:从提示词工程到结构化内容生成的实战指南
1. 项目概述与核心思路最近在折腾AI应用开发,特别是想搞一个能稳定输出、逻辑清晰、还能带点“人味儿”的文本生成工具。市面上现成的方案要么太“机械”,要么定制化程度不够,总感觉差点意思。后来,我在一个开发者社区里看到了一个…...
Tome:基于MCP协议的无代码AI桌面助手,轻松连接本地与云端模型
1. 项目概述:Tome,一个为普通人打造的魔法AI桌面应用 如果你对大型语言模型(LLM)和AI助手感兴趣,但又觉得那些命令行工具、复杂的API配置和JSON文件让人望而却步,那么Tome的出现,可能就是为你准…...
Gemini3.1Pro透明化指南:模型卡与数据卡入口解析
在 2026 年,越来越多的团队开始把“模型怎么用”升级为“模型用得是否可控、可追溯”。尤其是涉及合规审计、数据治理与风险评估时,工程侧最需要的往往是:能快速找到模型信息与数据来源的透明化页面入口,确保链路清晰、记录完整、…...
