AX 爱鲜报

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 算法代码的工程师

注意事项

项目定位是教学与参考,代码追求简洁易懂,生产环境使用时请根据实际需求评估性能与健壮性。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。