![](https://img-blog.csdnimg.cn/87be51bb192146ddb47985165162343d.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构(JAVA语言)
文章平均质量分 82
分享学习各种数据结构的笔记,由理论结合实践。纯代码从零实现。
默默地敲出Bug
这个作者很懒,什么都没留下…
展开
-
JDK1.8中的HashMap源码分析
在讲解之前先思考一下为什么需要Hashmap?如果我们想在顺序表中查找某一个记录时,通常都是从表头开始,挨个地比较记录a[i]与key的值是 “==” 还是 “!=” ,直到有相等才算是查到了,这种挨个遍历(即线性查找)的最坏时间复杂度可想而知是O(N)。如果顺序表的元素是有序的情况下,我们可以利用a[i]与key的 “”来折半查找,直到相等时查找成功并返回i下标,此时的复杂度降到了O(logN)。这两种查找方式都是在 “比较”,当元素增多时比较的次数也随之增加,想一想这种比较是否真的有必要?原创 2023-03-29 09:42:43 · 187 阅读 · 0 评论 -
Java数据结构 - 队列与MyQueue
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,队列中的元素遵循(First In First Out)原则。允许插入的一端称为队尾,允许删除的一端称为队头。原创 2022-12-23 17:56:08 · 379 阅读 · 0 评论 -
Java数据结构 - 栈与MyStack
栈属于线性表的一种特殊结构,栈中的元素被限制为只能从表的一端进出,这一端称之为,另一端称为,元素进出的顺序遵循(First In Last Out),或:将元素插入表中的操作叫做进栈/压栈/入栈,插入元素在栈顶。:将元素从表中删除的操作叫出栈/弹栈,删除元素在栈顶。原创 2022-12-23 17:49:47 · 354 阅读 · 0 评论 -
Java数据结构 - 链表与MyLinkedList
链表是一种线性的数据结构,由有限的结点组成。其特点是结点的物理存储结构不一定连续,但逻辑顺序是连续的,通过链表中的引用链接次序实现。原创 2022-12-23 11:42:18 · 222 阅读 · 0 评论 -
Java数据结构 - 数组与ArrayList
数组是在,每个单元存储相同数据类型的值。这些内存单元称之为数组的,通过数组的(或称索引)访问,下标从0开始。原创 2022-12-22 21:42:50 · 861 阅读 · 0 评论 -
Java数据结构 - 优先级队列(PriorityQueue)
JDK1.8中的PriorityQueue底层使用了堆的数据结构,那么我们先了解一下堆的概念。堆通常是一个可以被看做一棵二叉树的数组对象。堆中某个结点的值总是不大于或不小于其父结点的值;堆总是一颗完全二叉树。将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。堆是非线性数据结构,相当于一维数组,有两个直接后继。堆的定义如下:n个元素的序列{k1, k2, k3, …, kn}当且仅当满足下关系时,称之为堆。原创 2022-10-13 18:21:38 · 1235 阅读 · 0 评论