数据结构
文章平均质量分 73
lanleihhh
求其上者得其中
展开
-
BFS与DFS
BFS与DFSBFS:(Breadth-First-Search )广度优先搜索,使用队列实现,寻找最短路径DFS:(Depth-First-Search) 深度优先搜索,使用递归实现,快速发现底部节点BFS:DFS:BFS应用:树的层序遍历:队列DFS:深度优先,树的中序遍历(以及前序,后序)图中的BFS和DFS待补充…...原创 2022-06-18 15:46:07 · 83 阅读 · 0 评论 -
Java中除Map实现类之外可以存储K-V的类
SimpleEntry可以存储单键值对,一个对象只存储一个键值对SImpleEntry的使用构造方法赋值可以修改对象的值应用:需要单键值对存储的场景LeetCode102 二叉树的层序遍历SimpleImmutableEntry初始化后就不能再修改,修改会报错初始化后不能修改...原创 2022-06-17 18:00:57 · 691 阅读 · 0 评论 -
如何解决哈希冲突?
如何解决哈希冲突?1.什么是哈希冲突?1.1哈希算法1.2哈希表1.3哈希冲突2.解决哈希冲突2.1链地址法(拉链法)2.2开放定址法2.2.1线性探测法2.2.2二次探测法2.3再哈希法2.4建立公共溢出区1.什么是哈希冲突?1.1哈希算法哈希算法是将任意长度的输入通过散列算法变成固定长度的输出。1.2哈希表哈希表是通过key可以直接访问到key-value存储位置的数据结构,通过hash函数将key映射到表中的某个位置,来加快数据的查找。1.3哈希冲突不同的key可能计算出相同的hash原创 2022-05-16 21:50:43 · 224 阅读 · 0 评论 -
B树-多路平衡查找树
B树B树一个m阶B树的具有的特征(或必须满足的条件)B树的查找B树插入元素(一定是在叶子节点插入)1.插入后,没有破坏B树的规则2.插入后,叶子节点元素超过m-1个B树删除元素1.删除叶子节点上的元素,没有破坏规则2.删除叶子节点上的元素,剩余元素不足,破坏B树规则,但是相邻兄弟节点有多余元素3.删除元素在叶子节点,剩余元素不足,破坏B树规则,相邻兄弟也没有多余元素4.删除的中间节点的元素B树数据库中数据量过大时,平衡二叉树由于深度过大,造成磁盘IO次数多,效率低。B树也叫平衡多路查找树,它的出现就原创 2022-04-23 16:06:24 · 3189 阅读 · 2 评论 -
排序算法:计数排序、快速排序、三路快排、冒泡排序、选择排序、插入排序
排序算法:计数排序、三路快排、冒泡排序、选择排序、插入排序计数排序三路快排计数排序与三路快排解决 leetcode75冒泡排序选择排序插入排序计数排序三路快排计数排序与三路快排解决 leetcode75冒泡排序选择排序插入排序...原创 2022-04-11 16:54:48 · 875 阅读 · 1 评论 -
数据结构与算法--并查集
数据结构–并查集一. 并查集解决什么问题 ?主要用于解决元素分组的问题,处理一些不相交集合,合并两个集合和查询两个集合是否连接并查集的基本数据数组作为容器初始化时每个元素都是独立的一个集合,没有连接的元素当合并两个index(p,q)对应的元素时,将p的元素替换为q的元素或q的元素替换为p的元素二.操作写一个并查集的接口package com.company.project.subject.day8;public interface UnionFind {原创 2021-12-08 22:14:55 · 333 阅读 · 0 评论 -
二分搜索树
二分搜索树树结构树的概念 树是一种重要的**非线性**数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树的结点树的每个元素都是一个节点,树有根节点,孩子结点,叶子节点,一棵树只能有一个根节点(对于非空树来说)树按照最多有n个孩子节点就称为n叉树,如上图就是二叉树,只有两个孩子节点二叉树二叉树具有天然的递归结构每个结点的左子树是也二叉树每个结点的右子树是也二叉树总结一个层数为k 的满二叉树总结点数为:(2^k) -1第i原创 2021-11-13 12:24:53 · 651 阅读 · 0 评论 -
Java--递归
递归普通方法:递归方法:递归:递归将原本的问题转化为更小的同一问题(也就是函数/方法调用自身)使用递归:代码中先写递归到底(递归结束条件)的情况,再写递归调用先来看一个求累加的问题:1+2+3+…+100最开始的时候我们使用循环去做,从1一直加到100或从100一直加到1package com.company.project.homework;public class homework2 { public static void main(String[] args) {原创 2021-11-12 18:33:17 · 1030 阅读 · 0 评论 -
数据结构-数组
数据结构-数组Java数组在Java中,数组是用来存储一组数据类型相同的元素,如整数(int),浮点数(double,float),引用类型(java类库中的类,自定义类的实例化对象)定义数据类型[] 数组名数据类型 数组名[] (不推荐)初始化数据类型[] 数组名 = new 数据类型[size]数据类型[] 数组名 = {元素1,元素2…}索引数组中通过索引(从0开始)来实现对数组元素的增删改查数组优点由于数组在内存中分配连续空间,适合快速查询自定原创 2021-08-19 12:45:03 · 79 阅读 · 0 评论 -
栈与队列--Java
目录栈(Stack)与队列(Queue)栈定义:特点:栈的实现数组实现链表实现栈的应用有效的括号(20)棒球比赛(682)队列定义:特点:队列的实现数组队列循环队列栈(Stack)与队列(Queue)栈定义:一种运算受限的线性数据结构,只能在表尾进行插入删除操作(栈底固定,栈顶浮动),表尾称为栈顶,另一端称为栈底特点:后进先出Last In First Out(LIFO)操作:push(E) 入栈pop() 出栈peek() 返回栈顶元素getSize()原创 2021-08-22 22:38:23 · 145 阅读 · 0 评论 -
数据结构--链表
目录数据结构--链表定义实现结点增删改查数据结构–链表定义链表是一种线性表,但是不像数组一样连续存储,而是将每组数据存储一个结点中,每个结点中又有着指向下一个结点的指针优点:不连续存储–>插入时间复杂度为O(1)动态数据结构,不用处理固定容量的问题(栈/队列/动态数组,都是依靠数组的扩容)缺点:访问时间复杂度为O(n)不能随机访问,没有索引增加了结点的指针域,空间开销大实现我们自定义一个链表public class MyLink<T>原创 2021-08-25 23:38:38 · 146 阅读 · 0 评论