数据结构
文章平均质量分 71
薰衣草2333
好好编程,天天向上(大梦想)
展开
-
Map和Set的详解
需要使用替换法进行删除,即在它的右子树中寻找中序下的第一个结点(关键码最小),用它的值填补到被删除节点中,再来处理该结点的删除问题。cur不是root,cur是parent.right,则parent.right == cur.right。由此可知:Map是一个接口类,该类没有继承Collection,该类中存储的是结构的键值对,并且K是唯一的,不能重复。(5)Map中键值对中的Key不能直接修改,value可以修改,如果要修改key,只能先将key删除掉,然后再进行重新插入。原创 2022-11-27 20:54:43 · 1417 阅读 · 1 评论 -
排序的详解
该算法是采用分治算法的典型的应用,将已有序的子序列合并,得到完全有序的序列,即先使每个子序列有序,再使子序列段间有序,若两个有序表合并为一个有序表,称为二路合并。稳定性:假设在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,则称这种排序算法是稳定的,否则称为不稳定的。所谓交换就是根据序列中的两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。注意:排升序要建大堆,降序要建小堆。原创 2022-11-19 15:50:04 · 169 阅读 · 0 评论 -
优先级队列(堆)的详解
的顺序存储方式存储在一个一维数组中,并满足ki = k2i + 2 ),则称为小堆(或大堆)。根节点最大的堆为大根堆或者最大堆,根节点最小的堆为小根堆或最小堆。优先级队列提供了两个最基本的操作:一个是返回最高优先级对象,一个是添加新的对象,优先级队列底层实现用到的数据结构就是堆。由于根节点的左右子树已经完全满足堆的性质,因此只需要将根节点向下调整好即可。(2)将最后新插入的节点向上调整,直到满足堆的性质。原创 2022-11-12 22:19:45 · 677 阅读 · 0 评论 -
二叉树的详解
双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点 孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点 根结点:一棵树中,没有双亲结点的结点。(1)满二叉树:一棵二叉树,如果它的每层结点数都达到最大值,则这棵二叉树就是满二叉树,即若一棵二叉树的层次为k,且它的结点数是2^k - 1,那么它是满二叉树。原创 2022-11-05 20:29:30 · 197 阅读 · 0 评论 -
用栈实现队列,用队列实现栈
【代码】用栈实现队列,用队列实现栈。原创 2022-10-23 22:33:40 · 114 阅读 · 0 评论 -
队列(Queue)的详解
双端队列是指允许两端都可以进行入队和出队的操作的队列,Deque是一个接口,使用时必须创建LinkedList的对象。底层还是一个数组,指定一个队列的大小,入队时,当队列满的时候就不能再放了,出队时当队列为空的时候就不能再出队了。队列,在Java中是用双向链表实现的,实现类是LinkedList,性质是先进先出 FIFO。队列:只允许在一端进行插入操作,在另一端进行删除数据操作的特殊的线性表,队列具有先进先出。注意:栈,在Java中是用数组实现的,Stack继承自Vector,性质是后进先出 LIFO。原创 2022-10-23 22:31:20 · 3266 阅读 · 0 评论 -
栈(Stack)的详解
栈是一种特殊的线性表,其只允许在指定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。由图可知,Stack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的。虚拟机栈:是JVM运行时数据区的一部分,是一块内存空间,局部变量,方法的开辟都保存在这个区域。栈帧:方法开辟出来的内存被称为栈帧,细化为某一个方法的内存。1、压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。3、栈、虚拟机栈、栈帧的区别。原创 2022-10-21 13:25:19 · 3439 阅读 · 0 评论 -
泛型的详解
一、引出泛型 不使用泛型 使用泛型之后 代码解释 : 1、泛型的目的是在编译阶段,让编译器去给我们做检查 2、类名后的代表占位符,表示当前类是一个泛型类 3、不能new泛型类型的数组二、泛型的上界 在定义泛型时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束 例如: 即只接受Number的子类作为E的类型实参 复杂实例: 即E是必须实现了 Comparable 接口的三、泛型方法 1原创 2022-10-02 23:54:56 · 399 阅读 · 0 评论 -
ArrayList的详解
线性表在逻辑上是线性结构,也就是说是连续的一条直线,但是在物理上不一定是连续的,线性表在物理上存储的时候,通常以数组和链式结构的形式存储,常见的线性表:顺序表、链表、栈、队列...顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储,在数组上完成数据的增删查改。1)调用无参构造方法,初始化ArrayList对象,底层创建了一个空数组,第一次add的时候才去指定数组的容量。6、ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。原创 2022-10-04 00:03:46 · 5043 阅读 · 1 评论