![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 84
开始被坑
梦想成为光头强!
这个作者很懒,什么都没留下…
展开
-
数据结构--哈希表
哈希表一丶概念二丶基本操作--问题引出关于哈希冲突哈希冲突--避免(1)设计原理(2)常见的哈希函数(3)负载因子调节哈希冲突--解决(1)冲突解决--闭散列<1>线性探测<2>二次探测(2)冲突解决--开散列 / 哈希桶<1>关于继续优化<2>关于代码实现一丶概念首先为什么会有哈希表呢?在这之前,我们发现,在顺序结构中,如果我们想要知道一个元素是否存在,那么基本就要遍历整个结构,这样它的时间复杂度就是O(N)。如果是树形结构,那么我们就要根据想要找的元原创 2021-12-01 14:41:33 · 714 阅读 · 0 评论 -
数据结构--二叉搜索树
二叉搜索树一丶概念以及特点二丶相关操作定义TreeMap类put操作一丶概念以及特点什么是二叉搜索树呢?二叉搜索树就是二叉树的基础上对其进行一定规则的限制。也就是二叉搜索树中任一节点的左子树的值都小于当前节点的值,右子树的值都大于当前节点的值。也就是说:如果任一结点的左子树非空,则左子树的所有结点的值都小于根结点的值;如果任一结点的右子树非空,则右子树的所有结点的值都大于根结点的值。这意味着什么呢?意味着在中序遍历的情况下,二叉搜索树是一个单调递增的数组。二丶相关操作那么二叉搜索原创 2021-11-26 18:18:44 · 667 阅读 · 0 评论 -
数据结构--关于堆的构造
关于堆的构造一丶相关概念这一篇博客主要是关于堆的相关问题。一丶相关概念因为二叉树有顺序存储和链式存储,所以所谓堆,通常我们可以看做是一个完全二叉树的数组对象。其具体定义如下:如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为 小堆(或大堆)。将根节点最原创 2021-11-14 14:22:18 · 2759 阅读 · 0 评论 -
数据结构--二叉树
关于二叉树前言一丶树的相关定义根结点结点的度树的度叶子结点结点的层次树的高度二丶二叉树相关定义关于满二叉树关于完全二叉树二叉树性质(1)第i层的最大结点数(2)深度为k的最大结点数(3)叶子结点总比度为2的节点多1(4) 具有n个结点的二叉树的深度(5)判断根、双亲、左右孩子和总结点的关系三丶遍历二叉树构造一个二叉树遍历二叉树前序遍历前言我们前面的栈丶队列丶链表等等都是一对一的数据结构,但是树是一对多的数据结构。树也有很多的分类,但是笔者在这里仅仅涉及二叉树,其他树会在后续涉及。一丶树的相关定义树是原创 2021-11-03 12:56:39 · 205 阅读 · 0 评论 -
数据结构--栈和队列(下)
栈和队列(下)--队列一丶队列(1)队列的概念(2)队列的分类1>顺序队列第一种:front不动第二种:rear不动一丶队列什么是队列?上篇博客我们说了,栈是一种后进先出的数据结构,而在这里,同为数据结构的队列又是怎么的表现形式呢?我们用一张图来进行查看:(1)队列的概念队列是只允许在一端进行插入,另外一端进行删除的特殊的线性表。进行插入操作的一端叫做队尾,进行删除操作的一端叫做队头。因为这种特殊性,所以队列具有先进先出的性质。(2)队列的分类因为队列也是顺序结构,那么它的构造其实也原创 2021-10-30 12:03:35 · 147 阅读 · 0 评论 -
数据结构--栈和队列(上)
栈和队列(上)--栈一丶关于栈的定义以及基本方法二丶关于栈的使用关于递归括号匹配逆波兰表达式求值出栈入栈次序匹配三丶栈的模拟实现四丶总结一丶关于栈的定义以及基本方法首先,什么是栈呢?我们中国的汉字–栈:储存货物或供旅客住宿的房屋,这是对于它的解释。那么同理,其实在编程中的栈也就是储存元素数据的一种数据结构。我们从数据结构的角度看的话,栈其实就是一种操作受限的线性表。其只能在一端进行插入和删除工作,这一端叫做栈顶,相反的一端叫栈底。我们把一个元素进栈叫做进栈,入栈或者压栈。我们把一个元素出栈叫做出原创 2021-10-26 19:43:08 · 143 阅读 · 0 评论 -
数据结构--LinkedList与链表
LinkedList与链表一丶关于ArrayList和LinkedList的区别二丶关于LinkedList的使用我们上篇博客讲了什么是ArrayList,这一篇博客说的是LinkedList。一丶关于ArrayList和LinkedList的区别这两种结构的底层数据结构不同,因为数据结构不同所以导致了很多方面的不同。这里大致说一下。1.ArrayList底层是数组,而LinkedList底层是链表2.对于按照index下标随机查找,因为ArrayList底层是数组,所以其查找效率更好。3.原创 2021-10-25 15:35:44 · 203 阅读 · 0 评论 -
数据结构--关于ArrayList(下)
这一篇博客主要是关于ArrayList部分方法的重写import java.util.Arrays;public class ArrayList<E>{ E[] elementData; int size; private static final int DEFAULT_CAPACITY = 10; public ArrayList(int size){ if(size <= 0){ size = DEFA原创 2021-10-18 12:51:39 · 59 阅读 · 0 评论 -
数据结构---关于ArrayList(上)
ArrayList基础前言一丶关于构造ArrayList二丶关于ArrayList的使用关于ArrayList的遍历关于ArrayList的扩容三丶关于ArrayList的实际使用前言关于ArrayList呢,首先应该就是对他的家族有一个大概的轮廓图。我们在IDEA中打开并且进行查看:那么我们在这里对ArrayList所实现的这些接口进行说明:1. ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问2. ArrayList实现了Cloneable接口,表明原创 2021-10-17 19:54:19 · 140 阅读 · 2 评论 -
数据结构--泛型与包装类
泛型和包装类一丶关于泛型泛型例题关于Object类型问题一:转型问题二:关于基础数据类型关于泛型的使用测试泛型二丶关于包装类自动装箱自动拆箱关于面试题一丶关于泛型所谓泛型,主要就是为了解决类型锁死的问题,什么意思?就是说在一个类中,如果我们设置了这个类成员变量的类型,这个时候如果想要接收其他类型,那么就不行,也就是说类型转换,转换不了的情况。关于这一点我们用一个案例来进行解释,因为ArrayList可以接收任意类型参数,所以: public static void main(String[] ar原创 2021-10-17 15:37:33 · 98 阅读 · 0 评论 -
数据结构---关于复杂度
时间复杂度前言一丶衡量算法的效率二丶时间复杂度关于大O阶方法前言正式开始算法啦!!加油一丶衡量算法的效率我们学习和做事都会讲究效率,同样的,计算机程序在执行的过程中也会讲究效率。但是我们要如何知道一个程序的效率是好还是不好呢?那么我们就需要衡量的标准。算法的效率分为两种:时间复杂度和空间复杂度\color{red}{时间复杂度和空间复杂度}时间复杂度和空间复杂度时间效率就是时间复杂度,衡量的是一个算法的运行效率。空间效率就是空间复杂度,衡量的是一个算法所需要的额外空间。二丶时间复杂度实际原创 2021-10-17 13:16:15 · 103 阅读 · 0 评论