本页面全面概述了 TheAlgorithms/Java 仓库中数据结构的实现。这些实现旨在用于教育目的,帮助理解各种数据结构的内部工作原理、属性和应用。有关操作这些数据结构的算法,请参见“算法”部分中的相关页面。
该仓库包含了按逻辑类别组织的大量数据结构实现。每个实现都附有全面的文档和测试,以演示使用模式和边界情况。
来源
堆是满足堆属性的树形数据结构,使其在优先级队列操作中效率很高。
来源
MinHeap 类实现了一个最小堆,其中每个节点的键都小于或等于其子节点的键。根节点包含最小元素,因此以 O(1) 时间检索最小元素效率很高。
主要功能
toggleUp 和 toggleDown 方法在添加或删除元素时保持堆属性Time Complexities:
- Get minimum element: O(1)
- Insert element: O(log n)
- Delete element: O(log n)
使用示例
来源
MaxHeap 类实现了一个最大堆,其中每个节点的键都大于或等于其子节点的键。根节点包含最大元素,因此以 O(1) 时间检索最大元素效率很高。
主要功能
Time Complexities:
- Get maximum element: O(1)
- Insert element: O(log n)
- Delete element: O(log n)
来源
GenericHeap 类提供了堆数据结构的通用实现,适用于任何实现 Comparable 接口的类型。
主要功能
来源
FibonacciHeap 类实现了一种更复杂的堆数据结构,在某些操作上具有更好的均摊时间复杂度。它在合并两个堆和减小键值时特别高效。
主要功能
来源
MinPriorityQueue 类提供了使用最小堆实现的优先级队列。键值最小的元素具有最高优先级,并首先出队。
主要功能
来源
列表是按顺序存储元素的线性数据结构。该仓库包含了各种具有不同特性和操作的链表实现。
来源
SinglyLinkedList 类实现了一个基本的链表,其中每个节点指向序列中的下一个节点。它构成了仓库中许多其他列表操作和扩展的基础。
主要功能
使用示例
时间复杂度
来源
ReverseKGroup 类提供了按 k 个节点一组反转链表中节点的功能。如果剩余节点少于 k 个,则它们保持不变。
示例
Input: 1->2->3->4->5 and k = 3
Output: 3->2->1->4->5
主要功能
来源
RotateSinglyLinkedLists 类提供了一种将单向链表向右旋转指定位置数的方法。
示例
Input: 1->2->3->4->5 and k = 2
Output: 4->5->1->2->3
主要功能
来源
QuickSortLinkedList 类实现了单向链表的快速排序算法。它围绕枢轴元素(头部)划分列表,递归地排序子列表,然后将它们组合起来。
主要功能
来源
MergeSortedSinglyLinkedList 类提供了一个静态方法,用于将两个已排序的单向链表合并为一个单独的已排序列表。
使用示例
主要功能
来源
缓存是旨在存储常用数据以加快检索速度的数据结构。该仓库包含了常见缓存策略的实现。
来源
LRUCache 实现了一个采用最近最少使用(LRU)淘汰策略的缓存。当缓存满时,它首先丢弃最近最少使用的项目。
主要功能
Time Complexities:
- Get: O(1)
- Put: O(1)
来源
LFUCache 实现了一个采用最不常用(LFU)淘汰策略的缓存。当缓存满时,它首先丢弃最不常用的项目。如果存在平局,则在具有最小频率的项目中移除最近最少使用的项目。
主要功能
Time Complexities:
- Get: O(1)
- Put: O(1)
来源
MRUCache 实现了一个采用最近最常用(MRU)淘汰策略的缓存。当缓存满时,它首先丢弃最近最常用的项目,这在旧项目更有可能再次被访问的场景中可能很有用。
主要功能
Time Complexities:
- Get: O(1)
- Put: O(1)
来源
树是由节点通过边连接的分层数据结构。该仓库包含了针对不同操作优化的各种树实现。
来源
BinaryTree 类实现了一个基本的二叉树,其中每个节点最多有两个子节点。这构成了更专业树结构的基础。
主要功能
来源
AVLTree 类实现了一个自平衡二叉搜索树,其中任何节点的两个子树的高度差最多为一。
主要功能
来源
RedBlackBST 类实现了使用红黑着色规则的自平衡二叉搜索树。
主要功能
来源
SegmentTree 类实现了用于高效数组范围查询和更新的树形数据结构。
主要功能
来源
FenwickTree 类实现了用于高效前缀和计算的空间高效数据结构。
主要功能
来源
Trie 类实现了用于存储动态字符串集的树形数据结构,常用于快速前缀搜索。
主要功能
来源
图是由节点(顶点)通过边连接的数据结构。该仓库包含了各种图的表示和算法。
来源
该仓库包含了多种表示图的方式
MatrixGraphs: 使用邻接矩阵表示图,其中二维数组表示顶点之间边的存在和权重。
UndirectedAdjacencyListGraph: 使用邻接列表表示无向图,其中每个顶点维护其相邻顶点的列表。
来源
DijkstraAlgorithm: 查找带非负边权重的加权图中从源顶点到所有其他顶点的最短路径。
BellmanFord: 计算从单个源顶点到所有其他顶点的最短路径,即使存在负权重边。
FloydWarshall: 查找加权图中所有顶点对之间的最短路径。
JohnsonsAlgorithm: Dijkstra 和 Bellman-Ford 算法的组合,用于在稀疏图中查找所有顶点对之间的最短路径。
来源
Kruskal: 通过贪婪地添加不形成循环的最小边来查找最小生成树。
PrimMST: 另一种查找最小生成树的方法,通过从起始顶点生长单个树。
BoruvkaAlgorithm: 一种不同的最小生成树构建方法,同时生长多棵树。
来源
TarjansAlgorithm: 查找有向图中的强连通分量。
Kosaraju: 另一种查找强连通分量的算法。
ConnectedComponent: 识别无向图中的连通分量。
Cycles: 检测图中的循环。
来源
来源
HashMap 是一种实现关联数组的数据结构,将键映射到值。该仓库包含了多种具有不同冲突解决策略的 HashMap 实现。
来源
HashMap 类提供了使用单独链表解决冲突的哈希映射的基本实现。
主要功能
来源
LinearProbingHashMap 类实现了使用线性探测解决冲突的哈希映射。
主要功能
来源
HashMapCuckooHashing 类实现了使用布谷鸟哈希的哈希映射,它提供最坏情况下的常数时间查找。
主要功能
来源
队列是先进先出(FIFO)数据结构,其中元素从尾部插入,从头部移除。
来源
CircularQueue 类实现了使用循环数组的队列。当队列到达数组末尾时,它会循环回到开头。
主要功能
来源
LinkedQueue 类实现了使用链表的队列,允许动态调整大小。
主要功能
来源
PriorityQueues 类实现了一个队列,其中元素具有关联的优先级。优先级较高的元素会在优先级较低的元素之前出队。
主要功能
来源
Deque 类实现了一个允许在两端进行插入和移除的队列。
主要功能
来源
该仓库还包括了几个用于特定用例的专用数据结构。
CRDTs 是一种数据结构,可以在多个系统之间复制,每个副本可以独立更新而无需协调,并且总能解决不一致性。
已实现的类型
来源
BloomFilter 是一种空间高效的概率数据结构,用于测试一个元素是否是集合的成员。可能出现假阳性,但不会出现假阴性。
主要功能
来源
DisjointSetUnion 实现了一种数据结构,用于跟踪一组被划分为不相交(不重叠)子集的元素。
主要功能
来源
DynamicArray 类实现了一个可变大小的数组,可根据需要增长。
主要功能
来源
本页面概述了 TheAlgorithms/Java 仓库中可用的众多数据结构实现。每个实现都旨在演示不同数据结构的属性、操作和权衡,使其对学习和参考都具有价值。
有关操作这些数据结构的算法实现,请参阅“算法”部分。
来源
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(ad5e49)