![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
平生的数据结构与算法货架
文章平均质量分 84
平 生
眼有星辰大海 胸有丘壑万千 心有繁花似锦
展开
-
数据结构--B树
基本搜索结构 B-树概念 B-树的插入分析 B-树的插入实现 B+树和B*树 B-树的应用基本搜索结构我们先来回顾一下我们的数据结构,数据结构管理数据1.简单地将数据存起来2.除了存储数据,还需要可以快速搜索数据搜索1.搜索二叉树,极端情况下退化,类似单支,效率就变成了O(N)2.为了解决上面的问题,提出平衡树的概念,AVL树,红黑树。--O(logN) --map/set3.有没有更好的数据结构,哈希/散列表--O(1) --unorde.原创 2021-09-11 14:34:19 · 1514 阅读 · 1 评论 -
数据结构--LRU Cache
什么是LRU CacheLRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。 广义上的Cache指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。除了CPU与主存之间有Cache, 内存与硬盘之间也有Cache,乃至在硬盘与网络之间也有某种意义上的Cache── 称为Intern原创 2021-09-09 17:53:45 · 692 阅读 · 1 评论 -
数据结构--并查集
1. 并查集原理 2. 并查集实现 3. 并查集应用并查集原理并查集原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-fifind set)。 并查集是一个森林--多棵树构成的森林并查集,多个集合构成,每个集合就可以认为是一棵树并:合并多个集合查:两个值是否原创 2021-09-09 15:47:50 · 179 阅读 · 1 评论 -
数据结构--AVL树与红黑树
我们在上一章中初步认识到了set与map,了解了他们的使用,但是仅仅隐约的窥见了他们的底层实现,而这一章我们一起了解下他们的底层实现,以及数据结构较为复杂的部分,AVL树与红黑树set与map的底层结构 前面对map/multimap/set/multiset进行了简单的介绍,在其文档介绍中发现,这几个容器有个共同点是:其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此map、set等关原创 2021-08-26 22:02:19 · 1323 阅读 · 6 评论 -
数据结构--二叉树进阶
因为我们之前在学习数据结构的时候使用的是C语言,但是并不是所有的数据结构都适合使用C语言学习,如今我们了解了C++的基础语法,具备了学习这些稍微难一点的数据结构的前提,所以我们再次回顾数据结构,使用C++这一更加先进的武器,来解决更加复杂的问题二叉搜索树 二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也原创 2021-08-20 22:24:13 · 407 阅读 · 0 评论 -
数据结构--6.排序
在我们数据结构的学习中,排序无疑是一个非常重要的算法,具体应该描述为算法,而非数据结构,而在排序中又会有许多排序算法,这些排序算法各有优劣,集前人的很多智慧而设计出来的,里面有许多优秀的思想值得我们学习,让我们一起站在巨人的肩膀上,来了解下8大排序算法吧基础概念排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[原创 2021-07-28 05:38:13 · 232 阅读 · 0 评论 -
数据结构--5.二叉树
我们在上一章中,介绍了二叉树的数组实现方式以及堆的各种操作,但是对于数组存储而擦函数而言,可能会存在很多的空间浪费,所以今天我们来了解下二叉树的链式存储方式以及递归实现二叉树的各种操作二叉树链式结构的实现二叉树链式结构的遍历所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础对于我们的二叉树而言,最重要的就是遍历操作,那么二叉树结构相对..原创 2021-07-23 01:15:49 · 275 阅读 · 0 评论 -
数据结构--4.堆
在我们原来的学习中有提到过堆这个概念,在我们内存布局中,会有栈区,堆区等,堆是一种数据结构,用于存储数据,在我们深入学习堆之前,我们需要先了解一下什么是树,因为堆在逻辑结构上是个树,让我们来一点一点进行学习吧树提到树,我们会想到什么呢,是不是就是门外那颗有年代的枣树,有根,有茎,有叶子等等,而我们在数据结构中的树,并不完全是那样的,让我们一起来了解下吧树的概念 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂原创 2021-07-21 16:37:04 · 211 阅读 · 0 评论 -
数据结构--3.栈与队列
在我们学习完线性表之后,有两种由其引申出来的数据结构,栈与队列,他们相对于线性表而言仅仅是有了些许条件限制,在我们生活中也能见到许多栈与队列的例子,因为这两种数据结构只是线性表的变形,难度并没有增加,所以我们会对这两种数据结构进行集中介绍栈栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压原创 2021-07-18 18:07:19 · 75 阅读 · 0 评论 -
数据结构--2.线性表
在我们数据结构中,最简单的一种数据结构,便是线性表,其逻辑关系为线性关系,那么我们就一起来了解一下线性表的几种基本结构线性表原创 2021-07-18 01:47:32 · 210 阅读 · 0 评论 -
数据结构--1.时间复杂度与空间复杂度
在我们数据结构中,有两个很重要的概念,便是时间复杂度和空间复杂度,这两个复杂度通常是来衡量一个算法的时间耗费和空间耗费大小的,下面由我们一起来了解一下这两个很重要的概念吧!时间复杂度时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一 个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知 道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个 分析方式。一个算法所花原创 2021-06-18 18:34:24 · 438 阅读 · 0 评论 -
稀疏数组
稀疏数组:稀疏数组是一种简单的数据结构,其大致思路就是将大部分值都为同一个数的数组(一般为0),转化成表格的形式,以达到节约空间的目的稀疏数组的处理方法:1.记录一个数组一空有几行几列,有多少个不同的值;2.将具有不同值元素的行列值记录在一个小规模数组中,从而缩小程序的规模public class sparseArray { public static void main(String[] args) { //先建一个原始的二维数组 //原创 2021-05-13 11:28:39 · 57 阅读 · 0 评论