菜单

概述

相关源文件

目的与范围

TheAlgorithms/Python 是一个综合性的教育仓库,包含了各种用 Python 实现的算法。该仓库作为一个学习资源,包含了超过2,500个算法实现,涵盖了计算机科学基础概念、数学算法、机器学习、密码学以及专业领域。所有实现都包含文档、doctest,且旨在用于教育目的而非生产环境。

本文档介绍了该仓库的高层架构、组织原则和基础设施。有关具体的算法实现,请参阅各个领域章节(排序与搜索动态规划机器学习等)。有关贡献指南和标准,请参阅贡献指南

仓库架构

高层组织结构

来源: DIRECTORY.md1-1178 pyproject.toml1-263 .github/workflows/build.yml1-38

算法领域分布

该仓库包含26个主要算法领域的实现,以分层目录结构组织。每个领域都包含多个子目录和专门的实现。

领域目录关键领域示例文件
数据结构data_structures/树、堆、图、链表binary_tree/avl_tree.py, heap/max_heap.py
排序sorts/比较/非比较排序quick_sort.py, merge_sort.py
搜索searches/线性、二分、图搜索binary_search.py, depth_first_search.py
动态规划dynamic_programming/优化问题knapsack.py, longest_common_subsequence.py
机器学习machine_learning/监督/非监督学习k_means_clust.py, linear_regression.py
加密ciphers/经典/现代密码rsa_cipher.py, caesar_cipher.py
图算法graphs/路径查找、最小生成树、网络流dijkstra.py, minimum_spanning_tree_kruskal.py
数学maths/数论、统计prime_numbers.py, fibonacci.py

来源: DIRECTORY.md184-537 DIRECTORY.md572-625

开发基础设施

依赖管理与构建系统

来源: pyproject.toml1-48 uv.lock1-10 requirements.txt1-20

代码质量管道

该仓库通过自动化工具强制执行严格的代码质量标准

来源: .pre-commit-config.yaml1-65 .github/workflows/build.yml1-38 .github/workflows/ruff.yml1-17

测试与验证框架

来源: .github/workflows/build.yml22-35 pyproject.toml163-171

欧拉计划集成

该仓库包含一个专门用于欧拉计划解法的验证系统

来源: .github/workflows/project_euler.yml1-36 pyproject.toml44-47 project_euler/problem_070/sol1.py1-102

文档系统

Sphinx 文档生成

该仓库使用 Sphinx 自动化生成 API 文档

来源: pyproject.toml180-263 .github/workflows/sphinx.yml1-51

目录管理

该仓库维护一个自动生成的目录列表

来源: .github/workflows/build.yml37 DIRECTORY.md1-1178

算法实现标准

代码结构模式

每个算法实现都遵循一致的模式

  1. 模块级文档字符串:包含算法描述和复杂度分析
  2. 类型提示:用于所有函数参数和返回值
  3. Doctest 示例:演示用法和边界情况
  4. 错误处理:针对无效输入
  5. 主代码块:包含 doctest 执行

物理学领域示例

来源: physics/speeds_of_gas_molecules.py54-79 maths/numerical_analysis/proper_fractions.py4-34

质量强制配置

pyproject.toml 通过 Ruff 定义了全面的 Linting 规则

规则类别示例目的
代码质量B (flake8-bugbear), SIM (flake8-simplify)捕获常见错误并简化代码
风格E, W (pycodestyle), I (isort)一致的格式化
类型安全FA (flake8-future-annotations)现代类型注解实践
安全S (flake8-bandit)安全漏洞检测
性能NPY (NumPy-specific rules)NumPy 最佳实践

来源: pyproject.toml49-157