SkillAgentSearch skills...

Algorithms

🚀 AI Agent时代,人人都是算法思想工程师。本项目含各种数据结构与经典算法,充分举例说明,用C/Java/Python/JS/Go/Rust等不同语言实现,一边学算法一边学语言。助您打牢基础,彻底理解编程的本质,以便驾驭和用好AI。

Install / Use

/learn @microwind/Algorithms

README

AI编程:算法思想与数据结构知识库大全

AI时代,我们需要理解算法思想与数据结构,学习不同的编程语言 English

License Last Updated Build Status GitHub stars GitHub forks

本仓库帮助你用不同编程语言来学习数据结构和算法思想,包括 CJavaPythonJavaScriptGoTypeScriptRust 等,提供充分注释说明。让你既能理解算法与数据结构原理,又能掌握不用语言的特点。

AI时代已经到来。AI可以替代人工编码工作,但难以替代人的认知与思考。只有在深入理解编程核心(数据结构 + 算法)的基础上,人们才能真正驾驭AI,并让AI产生更高的效率与价值。

表层的API、框架与应用方案日新月异,而数据结构、算法以及底层逻辑思维则历久弥新。表层技术需要快速学习、持续迭代;底层原理与思想则需要反复钻研与沉淀,从而持续提升认知。

🚀 本项目特点

  1. 涵盖了数值计算、字符查找、树遍历、排序、动态规划等不同算法。
  2. 每个算法都有多种语言的实现,通过算法与数据结构理解不同语言的特色。
  3. 例子丰富,逐一递进,适合学生或程序员学习和分析,不断提升编程水平。

新手入门指南

如果你是编程新手算法初学者,建议从这里开始:

入门指南

快速开始:完全新手建议按顺序阅读,有编程基础可直接看算法思想部分。

适合大学生与程序员学习

本项目将“概念理解 → 代码实现 → 对比语言 → 练习进阶”串成一条清晰路径,适合作为课程补充、自学路线或面试与工程能力提升的长期仓库。

你可以获得:

  • 体系化学习路径:从入门到经典算法,再到题库与项目,循序渐进不走弯路。
  • 多语言对照:同一算法多语言实现,帮助理解语言差异与工程习惯。
  • 可实践与可复用:多数目录提供可运行代码与说明,方便作业、面试与项目中直接参考。
  • 强化基础与思维:重视复杂度分析与算法思想,提升解决问题的效率与正确性。

算法概览

常见的算法有哪些?

  • 文本查找:包括线性搜索、二分搜索、树形搜索、最大公共子序列、回文计算等,主要针对字符串查找。
  • 数学计算:包括进制转换、开平方、斐波那契数列、质因数分解、数字三角形等,主要进行数值计算。
  • 排序算法:包括冒泡、选择、插入、希尔、归并、快速、堆、计数、桶、基数等,用于按顺序排列数据。
  • 其他算法:包括动态规划、贪心算法、分治算法、回溯算法、图算法(如广度优先搜索、深度优先搜索、Dijkstra算法、Kruskal算法等),此外还包括机器学习和人工智能算法,如分类算法、聚类算法、深度学习、强化学习等。

算法概览

常见算法思想

  • 贪心算法:一种通过每次选择局部最优解来期望得到全局最优解的方法。
  • 分治算法:将问题分解为较小的子问题,独立解决后再合并结果。
  • 动态规划:通过将复杂问题分解为更简单的重叠子问题来求解。
  • 回溯算法:通过逐步构建候选解并放弃那些无法满足条件的方案来解决问题。
  • 图算法:包括广度优先搜索、深度优先搜索、Dijkstra算法、Kruskal算法等,用于解决图相关问题。
  • 分支限界法:一种组合优化问题的求解方法,通过系统地探索搜索树的分支来解决问题。

详细请见:算法思想大全

10大经典排序算法

| 排序算法 | C语言版 | JS版 | Python版 | Java版 | TS版 | Go版 | 时间复杂度(平均/最坏) | 空间复杂度 | 稳定性 | 适用场景 | |---------|--------|-------------|---------|-------|-------------|-----|--------------------|---------|------|--------| | 冒泡排序 bubble sort | C | JS | Python | Java | TS | Go | O(n²) / O(n²) | O(1) | ✅ | 适用于小规模数据排序,教学用途 | | 插入排序 insert sort | C | JS | Python | Java | TS | Go | O(n²) / O(n²) | O(1) | ✅ | 适用于小规模数据,少量元素已基本有序的情况 | | 选择排序 selection sort | C | JS | Python | Java | TS | Go | O(n²) / O(n²) | O(1) | ❌ | 适用于小规模数据,数据交换次数较少 | | 堆排序 heap sort | C | JS | Python | Java | TS | Go | O(n log n) / O(n log n) | O(1) | ❌ | 适用于优先队列、TOP K问题 | | 快速排序 quick sort | C | JS | Python | Java | TS | Go | O(n log n) / O(n²) | O(log n) | ❌ | 适用于一般排序场景,性能优异但不稳定 | | 归并排序 merge sort | C | JS | Python | Java | TS | Go | O(n log n) / O(n log n) | O(n) | ✅ | 适用于大数据量排序,适合外部排序 | | 计数排序 counting sort | C | JS | Python | Java | TS | Go | O(n + k) / O(n + k) | O(k) | ✅ | 适用于数据范围有限的整数排序 | | 基数排序 radix sort | C | JS | Python | Java | TS | Go | O(nk) / O(nk) | O(n + k) | ✅ | 适用于大规模整数排序,如身份证号、手机号排序 | | 桶排序 bucket sort | C | JS | Python | Java | TS | Go | O(n + k) / O(n²) | O(n + k) | ✅ | 适用于数据范围均匀分布的排序 | | 希尔排序 shell sort | C | JS | Python | Java | TS | Go | O(n log n) / O(n²) | O(1) | ❌ | 适用于中等规模数据排序,适合半有序数据 |

字符串搜索与查找

| 算法 | C语言版 | Go语言版 | JS版 | Python版 | Java版 | TS版 | 时间复杂度(平均/最坏) | 空间复杂度 | 适用场景 | |------|--------|---------|-------------|---------|-------|-------------|--------------------|---------|--------| | 朴素搜索 | C | Go | JS | Python | Java | TS | O(mn) / O(mn) | O(1) | 适用于小规模文本搜索 | | 二分查找 | C | Go | JS | Python | Java | TS | O(log n) / O(log n) | O(1) | 适用于已排序数组的查找 | | KMP搜索 | C | Go | JS | Python | Java | TS | O(n + m) / O(n + m) | O(m) | 适用于大规模文本搜索 |

树搜索与遍历

| 算法 | C语言版 | JS版 | Python版 | Java版 | TS版 | 时间复杂度(平均/最坏) | 空间复杂度 | 适用场景 | |------|--------|-------------|---------|-------|-------------|--------------------|---------|--------| | 二叉树遍历 | C | JS | Python | Java | TS | O(n) / O(n) | O(n) | 适用于树结构数据的遍历,如 XML 解析、文件系统遍历 |

压缩算法详解

| 算法 | C语言版 | Go语言版 | JS版 | Python版 | Java版 | TS版 | 时间复杂度 | 空间复杂度 | 适用场景 | |------|--------|---------|-------------|---------|-------|-------------|------------|------------|--------| | Huffman编码 | C | Go | JS | Python | Java | TS | O(n log n) | O(n) | 适用于无损数据压缩、文件压缩 | | Run-Length Encoding | C | Go | JS | Python | Java | TS | O(n) | O(n) | 适用于简单重复数据压缩 | | LZ77算法 | C | Go | JS | Python | Java | TS | O(n) | O(n) | 适用于文本压缩、ZIP格式基础 | | LZW算法 | C | Go | JS | Python | Java | TS | O(n) | O(n) | 适用于GIF格式、文本压缩 |

加密算法详解

| 算法 | C语言版 | Go语言版 | JS版 | Python版 | Java版 | TS版 | 时间复杂度 | 空间复杂度 | 适用场景 | |------|--------|---------|-------------|---------|-------|-------------|------------|------------|--------| | AES加密 | C | Go | JS | Python | Java | TS | O(n) | O(1) | 适用于对称加密、数据保护 | | RSA加密 | C | Go | [JS](./cryptography/rsa.j

View on GitHub
GitHub Stars123
CategoryDevelopment
Updated5h ago
Forks13

Languages

C

Security Score

100/100

Audited on Mar 28, 2026

No findings