常见数据结构
一. 数据结构概述、栈、队列
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)对于贪心算法的学习主要以增加阅历和经验…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
