这个项目能做什么
本仓库是使用Java编写的算法与数据结构实现的精选集合,旨在展示常见计算技术的正确且优雅的实现。它既可作为开发者和学生的参考库,也可作为教育资源。
该项目涵盖广泛的主题,按主要部分组织:
**数据结构**:包括平衡树(AVL、红黑树)、二叉搜索树、伸展树、动态数组、Fenwick树、斐波那契堆、哈希表(包含多种冲突解决策略)、链表、优先队列(二叉堆、D堆、索引变体)、队列、线段树、稀疏表、栈、后缀数组、字典树和并查集结构。
**动态规划**:包括经典问题,如硬币找零、编辑距离、背包变体、最大连续子数组、最长公共/递增/回文子序列、旅行商问题和最小权重完美匹配。还包括实用示例,如平铺问题和一些特定问题挑战。
**几何**:涵盖二维和三维向量运算、圆和直线交点算法、最近点对、凸包构造(Graham扫描和单调链)、多边形面积和包含性检查、三角形面积计算以及地理距离计算。
**图论**:包含大量内容,包括树算法(定根、同构、中心、直径、LCA)、网络流算法(Ford-Fulkerson、Edmonds-Karp、Dinic、容量缩放、最小费用最大流),以及核心算法如BFS、DFS、Dijkstra、Bellman-Ford、Floyd-Warshall、拓扑排序、最小生成树(Kruskal、Prim、Boruvka)、强连通分量(Tarjan、Kosaraju)、割点、桥和欧拉路径。
**线性代数**:包括高斯消元、矩阵运算(行列式、逆、乘法、幂)、Freivald算法和线性递推求解器。
**数学**:涵盖数论主题,包括中国剩余定理、素数筛、欧拉函数、扩展欧几里得算法、GCD和快速傅里叶变换。
该项目使用Bazel作为构建系统(需要JDK 8+),并提供了运行单个算法或完整测试套件的清晰说明。许多实现包含William Fiset YouTube频道上的配套视频讲解,方便视觉学习者使用。每个算法条目通常包含其时间复杂度,代码按主题组织并采用一致的命名约定。该仓库采用MIT许可,并包含用于Bazel测试和README URL检查的CI/CD徽章。
评论
0 评分人数达到10人后显示
登录后参与讨论。