Algorithms 算法与数据结构合集
由 William Fiset 维护的 Java 算法与数据结构实现合集,涵盖排序、图论、动态规划、字符串、几何等经典主题,代码简洁优雅,并配有大量 YouTube 视频讲解,适合系统学习与面试准备。
爱鲜报评分
0.0
0 人评分
19k
星数
否
中文
Java
主语言
是
活跃
60
贡献者
人工分析
EDITORIAL推荐理由
这是 GitHub 上最受欢迎的算法学习仓库之一,近 2 万 Star,内容覆盖全面且实现质量高。每个算法都配有清晰的注释和视频讲解,非常适合用来理解算法原理而非仅仅刷题。使用 Bazel 构建,测试完善,也可仅用 JDK 编译运行,对 Java 开发者非常友好。
适用场景
- 计算机专业学生系统学习算法与数据结构
- 准备技术面试时查阅经典算法实现
- 在项目中参考高质量 Java 算法代码
- 配合 YouTube 视频进行可视化学习
- 作为算法教学或培训的辅助材料
优点
- 覆盖算法与数据结构主题非常全面
- 代码实现简洁优雅,注释清晰
- 大量算法配有 YouTube 视频讲解
- 使用 Bazel 构建,测试完善,质量有保障
- MIT 协议,可自由用于学习与项目参考
缺点
- 主要面向学习与参考,生产环境需自行评估性能与健壮性
- 部分算法实现为教学目的,未必是工程最优解
- 需要 JDK 8+ 与 Bazel 环境,对新手有一定门槛
- 文档以英文为主,中文资料较少
上手难度
进阶
项目简介
Algorithms 是由 William Fiset 维护的 Java 算法与数据结构实现合集,GitHub 上已获得近 2 万 Star。项目目标是用最简单、最优雅的方式正确实现常见的算法与数据结构,帮助开发者深入理解算法原理,而不仅仅是刷题。
许多算法都配有作者在 YouTube 上的视频讲解,代码看不懂时可以配合视频学习。
主要内容
数据结构
- 平衡树:AVL 树、红黑树
- 二叉搜索树、Splay 树
- 动态数组、链表、栈、队列
- 哈希表:双重哈希、线性探测、二次探测、分离链接
- 优先队列:二叉堆、索引堆、D 叉堆
- 树状数组(Fenwick Tree)、线段树、稀疏表
- 并查集、Trie、后缀数组、斐波那契堆
算法主题
- 动态规划:硬币找零、编辑距离等经典问题
- 图论:Dijkstra、最大流(Edmonds-Karp)、旅行商问题等
- 排序算法、搜索算法
- 字符串算法、计算几何、线性代数与矩阵乘法
如何运行
项目使用 Bazel 作为构建系统,需要 JDK 8 及以上版本。
使用 Bazel 运行单个算法:
bazel run //src/main/java/com/williamfiset/algorithms/search:BinarySearch
运行全部测试:
bazel test //src/test/...
如果不想使用 Bazel,也可以仅用 JDK 编译运行:
javac -sourcepath src/main/java -d classes src/main/java/<相对路径>.java
java -cp classes <完整类名>
适合谁
- 正在系统学习算法与数据结构的计算机专业学生
- 准备技术面试、需要查阅经典算法实现的开发者
- 希望参考高质量 Java 算法代码的工程师
注意事项
项目定位是教学与参考,代码追求简洁易懂,生产环境使用时请根据实际需求评估性能与健壮性。
评论
- 暂无评论,来写第一条吧。