mcpField
C
clrs-algorithms

clrs-algorithms

github.com/grndlvl开发1779 次安装38 周前更新
代码仓库

关于 clrs-algorithms

clrs-algorithms 是基于 CLRS 的数据结构与算法参考 Skill,面向开发者提供选择指南、复杂度信息和伪代码,便于按需转换为不同编程语言。

主要功能

  1. 01数据结构选择指南
  2. 02Big-O 复杂度速查
  3. 03实现伪代码参考
  4. 04涵盖图与字符串算法

适用场景

  1. 01为问题选择数据结构
  2. 02比较时间与空间开销
  3. 03将算法转换为目标语言

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/grndlvl/software-patterns --skill clrs-algorithms

安装后在 Claude Code 中输入/clrs-algorithms确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

complexity-cheat-sheet.md
data-structure-selection.md
data-structures/advanced/
binomial-heap.md
disjoint-set.md
fenwick-tree.md
fibonacci-heap.md
segment-tree.md
skip-list.md
van-emde-boas-tree.md
data-structures/algorithms/
sorting-algorithms.md
data-structures/graphs/
adjacency-list.md
adjacency-matrix.md
graph-algorithms.md
network-flow.md
strongly-connected-components.md
data-structures/hash-based/
bloom-filter.md
hash-set.md
hash-table.md
data-structures/linear/
array.md
deque.md
dynamic-array.md
linked-list.md
queue.md
stack.md
data-structures/strings/
string-algorithms.md
suffix-array.md
suffix-tree.md
data-structures/trees/
avl-tree.md
b-tree.md
binary-tree.md

详细介绍

CLRS 数据结构与算法参考

基于《算法导论》(CLRS)的综合数据结构与算法参考。本技能提供与编程语言无关的指导和伪代码示例,可转换为任何编程语言。

本技能的触发条件

在以下情况下,本技能会自动触发:

  • 询问或需要实现某种数据结构
  • 需要为某个问题选择数据结构
  • 讨论时间/空间复杂度的权衡
  • 需要算法实现(排序、搜索、图算法)
  • 提及特定结构:B 树、堆、哈希表、图等

数据结构快速参考

线性结构
结构访问搜索插入删除适用场景
数组O(1)O(n)O(n)O(n)大小已知,需要按索引访问
动态数组O(1)O(n)O(1)*O(n)大小未知,频繁追加
链表O(n)O(n)O(1)O(1)频繁插入/删除
栈O(1)O(n)O(1)O(1)需要后进先出(LIFO)
队列O(1)O(n)O(1)O(1)需要先进先出(FIFO)
双端队列O(1)O(n)O(1)O(1)需要访问两端
树
结构搜索插入删除适用场景
二叉搜索树O(log n)*O(log n)*O(log n)*有序数据,频繁搜索
AVL 树O(log n)O(log n)O(log n)需要保证平衡
红黑树O(log n)O(log n)O(log n)频繁插入/删除
B 树O(log n)O(log n)O(log n)基于磁盘的存储
字典树O(m)O(m)O(m)字符串/前缀操作
堆O(1)/O(n)O(log n)O(log n)需要优先队列
伸展树O(log n)*O(log n)*O(log n)*自调整,具有时间局部性
树堆O(log n)*O(log n)*O(log n)*随机平衡、分割/合并
区间树O(log n)O(log n)O(log n)区间重叠查询
顺序统计树O(log n)O(log n)O(log n)秩/选择查询
K-D 树O(log n)*O(log n)*O(log n)*多维空间数据
基于哈希的结构
结构搜索插入删除适用场景
哈希表O(1)*O(1)*O(1)*快速键值查找
哈希集合O(1)*O(1)*O(1)*唯一性成员测试
布隆过滤器O(k)O(k)不适用概率性成员测试
图
结构空间添加边查询边适用场景
邻接表O(V+E)O(1)O(degree)稀疏图
邻接矩阵O(V²)O(1)O(1)稠密图
图算法
算法时间适用场景
网络流O(VE²)最大流、二分图匹配、最小割
强连通分量O(V+E)查找 SCC、2-SAT、依赖关系分析
字符串
结构构建搜索适用场景
后缀数组O(n log n)O(m log n)节省空间的字符串匹配
后缀树O(n)O(m)快速模式匹配、LCS
字符串算法O(m)O(n)KMP、Rabin-Karp、Boyer-Moore、Aho-Corasick
高级
结构适用场景
跳表概率平衡列表
不相交集并查集操作
线段树支持更新的区间查询
树状数组支持更新的前缀和
斐波那契堆Dijkstra、Prim,支持 O(1) decrease-key
二项堆可合并的优先队列
van Emde Boas 树整数键,操作复杂度为 O(log log u)
算法
算法适用场景
排序算法快速排序、归并排序、堆排序、基数排序等

* = 均摊或平均情况

决策指南

如何使用此参考资料

  1. 选择数据结构:从决策指南开始
  2. 学习数据结构:阅读完整文档和示例
  3. 快速回顾:使用上方表格快速查阅
  4. 实现:参考伪代码,并根据所用语言进行调整

语言转换说明

此参考资料中的伪代码使用以下约定:

  • class 用于类型定义
  • function 用于方法/函数
  • -> 用于调用对象的方法
  • // 用于注释
  • 类型提示写作 name: Type

转换为你的语言:

  • PHP:class、function、->、//,类型提示写在 docblock 或 PHP 8+ 中
  • JavaScript/TypeScript:class、function/箭头函数、.、//、TS 类型
  • Python:class、def、.、#、类型提示
  • Java/C#:直接映射,并使用 new、泛型

基于 Cormen、Leiserson、Rivest 和 Stein 所著《算法导论》(CLRS)的概念,MIT Press。

评论

支持 Markdown