当前位置:首页>python>algorithms,一个实用的 Python 库

algorithms,一个实用的 Python 库

  • 2026-09-09 15:52:39
algorithms,一个实用的 Python 库

大家好,我是木木。

今天给大家分享一个实用的 Python 库,algorithms。

algorithms

它收录了排序、搜索、图论、动态规划、回溯、贪心等经典算法的纯 Python 实现,每个文件都自包含、带文档字符串和复杂度标注,适合学习和面试准备。

项目地址:https://github.com/keon/algorithms

官方文档:https://github.com/keon/algorithms/blob/master/README.md

三个特点

代码精简

每个算法都是独立文件,代码量控制在几十行以内,docstring 写明原理、复杂度和引用。读一个文件就能理解一个算法,不像教科书那么厚。

覆盖面广

涵盖排序、搜索、图论、树、动态规划、回溯、贪心、位运算、字符串、数学、堆、栈、链表、集合、队列、矩阵等 20+ 分类,数百个算法实现。

即装即用

pip install algorithms 后直接 import 调用,不用自己手写。数据结构类(BinaryHeap、Trie、BST)可以直接在项目里复用。

最佳实践

安装后直接导入使用,零配置。

pipinstallalgorithms

排序算法实践

这段代码解决什么问题:演示 merge_sort 和 quick_sort 对乱序数组的排序效果,对比两种经典排序算法的输出。

fromalgorithms.sortingimportmerge_sort,quick_sortarr1=[38,27,43,3,9,82,10]print('Input:',arr1)print('Merge Sort:',merge_sort(arr1))arr2=[5,1,8,3,7,2,9,4,6]print('Input:',arr2)print('Quick Sort:',quick_sort(arr2))

两种排序算法都能正确返回升序结果。merge_sort 是稳定排序,时间复杂度 O(n log n);quick_sort 平均 O(n log n) 但最坏 O(n²)。根据场景选择合适的排序算法很重要。

图论 — Dijkstra 最短路径

这段代码解决什么问题:在有向加权图中,用 Dijkstra 算法找到从起点到终点的最短路径和代价。

fromalgorithms.graphimportdijkstragraph={'s':{'a':2,'b':1},'a':{'s':3,'b':4,'c':8},'b':{'s':4,'a':2,'d':2},'c':{'a':2,'d':7,'t':4},'d':{'b':1,'c':11,'t':5},'t':{'c':3,'d':5},}cost,path=dijkstra(graph,'s','t')print(f'Cost: {cost}, Path: {path}')

从节点 s 到 t 的最短路径是 s → b → d → t,总代价 8。Dijkstra 是单源最短路径的经典算法,适合非负权图。如果你需要处理负权边,可以考虑 Bellman-Ford。

高级功能

数据结构 — 二叉堆和字典树

这段代码解决什么问题:演示 BinaryHeap 的插入和最小值弹出,以及 Trie 的插入、精确搜索和前缀搜索。

fromalgorithms.data_structuresimportBinaryHeap,Trieheap=BinaryHeap()forvalin[5,3,8,1,9]:heap.insert(val)print('remove_min:',heap.remove_min())print('remove_min:',heap.remove_min())trie=Trie()forwordin['apple','app','application','bat']:trie.insert(word)print('search apple:',trie.search('apple'))print('search apt:',trie.search('apt'))print('starts_with ap:',trie.starts_with('ap'))

BinaryHeap 每次 remove_min 返回当前最小值(1、3),底层自动维护堆结构。Trie 支持 O(k) 的字符串插入和搜索,starts_with 前缀查询在前缀匹配场景中非常有用,比如自动补全。

适用 / 不适用场景

适用:

  • 学习算法和数据结构,每个文件都是独立可读的教学代码。
  • 面试准备,覆盖了大部分常见面试题的算法实现。
  • 项目中需要快速引入某个算法,不想从零手写。

不适用:

  • 需要生产级高性能算法库(建议用 NumPy、SciPy、networkx 等优化过的库)。
  • 深度学习、机器学习方向的算法需求。
  • 超大规模数据处理场景(这些实现是教学级别的,未做极致优化)。

上线前检查清单

  • 确认算法复杂度符合你的业务场景,不要在生产环境直接用于大规模数据。
  • 建议只 import 需要的具体算法,避免全量导入。
  • 贡献代码前先看 CONTRIBUTING.md,确保风格一致。

总结

如果你在学习算法、准备面试,或者项目中需要一个现成的算法实现,algorithms 是一个非常实用的工具库。每个文件都干净利落,读起来像在翻一本算法笔记。

最新文章

随机文章