[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6299":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":19,"lastSyncTime":30,"discoverSource":31},6299,"Learn-Algorithms","nonstriater\u002FLearn-Algorithms","nonstriater","算法学习笔记","",null,"C",8954,2402,363,7,0,11,27,2,74.2,"Apache License 2.0",false,"master",true,[26],"algorithm","2026-06-12 04:00:28","#The file is in Chinese\n\n>算法虐我千百遍，我待算法如初恋\n\n这里的内容是我学习算法过程的一些记录，希望能一直坚持下去。\n\n## 学习方法\n \n* 把所有经典算法写一遍  \n* 看算法有关源码   \n* 加入算法学习社区，相互鼓励学习\n* 看经典书籍  \n* 刷题   \n\n\n## 基本数据结构和算法\n\n这些算法全部自己敲一遍：\n\n### [链表](2%20List\u002FREADME.md)\n\n* 链表\n* 双向链表\n\n### [数组](2%20List\u002F数组.md)\n\n* [数组数列问题](9%20Algorithms%20Job%20Interview\u002F5%20数组数列问题.md)\n\n数组和链表结构是基础结构，散列表、栈、队列、堆、树、图等等各种数据结构都基于数组和链表结构实现。\n\n### [队列](2%20Queue\u002FREADME.md)\n \n* 队列\n* 堆栈\n\n### [哈希表 HashTable](3%20Hash%20Table\u002FREADME.md)\n\n* 散列函数\n* 碰撞解决\n\n### [字符串算法](1%20String\u002FREADME.md)\n\n* 子串查找 [字符串常见题目参考这里](9%20Algorithms%20Job%20Interview\u002F1%20字符串.md) \n    * BF算法  \n    * KMP算法  \n    * BM算法  \n* 正则表达式\n* 数据压缩\n* 排序\n\n\n### [树](4%20Tree\u002FREADME.md)\n\n* 二叉树  [快速排序](6%20Sort\u002FREADME.md)就是个二叉树的前序遍历，归并排序就是个二叉树的后序遍历  \n* [二叉查找树BST](4%20Tree\u002F2-二叉查找树\u002F二叉查找树.md)  有序的二叉树，中序遍历结果是递增的\n* [平衡二叉树 AVL树](4%20Tree\u002F3-平衡树AVL\u002FREADME.md)   绝对平衡二叉树；\n* [红黑树](4%20Tree\u002F9-红黑树%20R-B%20tree\u002F红黑树.md)  弱平衡二叉树；使用广泛\n* [B树](4%20Tree\u002F7-B树\u002FB树.md)\n* [B+树](4%20Tree\u002F7-B树\u002FB+树.md)  mysql 索引使用 B+树 的数据结构\t  \n* [字典树trie](4%20Tree\u002F4-字典树Trie\u002FREADME.md) 字典树也叫前缀树，单词查找树\n* [二叉堆](4%20Tree\u002F8-堆\u002F堆.md)  \n* [伸展树](4%20Tree\u002F5-伸展树\u002F伸展树.md)\n* [后缀树](4%20Tree\u002F6-后缀树\u002F后缀树.md)\n* 斐波那契堆(Fibonacci Heap)   \n* 最优二叉树(赫夫曼树)  \n\n\n\n### [图的算法](5%20Graph\u002FREADME.md)\n\n* 图的存储结构和基本操作（建立，遍历，删除节点，添加节点）   \n* 最小生成树  \n* 拓扑排序  \n* 关键路径  \n* 最短路径: Floyd,Dijkstra,bellman-ford,spfa  \n  \n  \n  \n### [排序算法](6%20Sort\u002FREADME.md)\n\n**交换排序算法**\n\n* 冒泡排序\n* 插入排序    \n* 选择排序    \n* 希尔排序\n* 快排   \n* 归并排序  \n* 堆排序\n\n**线性排序算法**\n    \n* 桶排序 \n  \n  \n### [查找算法](7%20Search\u002FREADME.md)  \n\n\n* 哈希表： O(1)  [hashtable实现参考这里](..\u002F3%20Hash%20Table\u002FREADME.md)\n* 有序表查找：二分查找 \n* 顺序表查找：顺序查找, 复杂度O(N)  \n* 分块查找： 块内无序，块之间有序；可以先二分查找定位到块，然后再到`块`中顺序查找  \n* 动态查找:  二叉排序树，AVL树，B- ，B+（这里之所以叫 `动态查找表`，是因为表结构是查找的过程中动态生成的）\n   \n\n\n## [算法设计思想](8%20Algorithms%20Analysis\u002FREADME.md)\n\n\n* [递归](8%20Algorithms%20Analysis\u002F递归.md) \n* [分治算法](8%20Algorithms%20Analysis\u002F分治算法.md) \n* [动态规划](8%20Algorithms%20Analysis\u002F动态规划.md)  \n* [回溯法](8%20Algorithms%20Analysis\u002F回溯法.md)\n* [迭代法](8%20Algorithms%20Analysis\u002F迭代法.md)  \n* [穷举搜索法](8%20Algorithms%20Analysis\u002F穷举搜索法.md)   \n* [贪心算法](8%20Algorithms%20Analysis\u002F贪心算法.md) \n\n\n\n## [面试算法题目](9%20Algorithms%20Job%20Interview\u002FREADME.md)\n\n这是一个算法题目合集，题目是我从网络和书籍之中整理而来，部分题目已经做了思路整理。问题分类包括：\n\n* 字符串\n* 堆和栈\n* 链表\n* 数值问题\n* 数组和数列问题\n* 矩阵问题\n* 二叉树\n* 图\n* 海量数据处理\n* 智力思维训练\n* 系统设计\n\n还有部分来自算法网站和书籍：\n\n* 九度OJ\n* leetcode\n* 剑指offer\n\n\n## [海量数据处理](91%20Algorithms%20In%20Big%20Data\u002FREADME.md)\n\n* Hash映射\u002F分而治之\n* Bitmap\n* Bloom filter(布隆过滤器)\n* Trie树\n* 数据库索引\n* 倒排索引(Inverted Index)\n* 双层桶划分\n* 外排序\n* simhash算法\n* 分布处理之Mapreduce\n\n\n\n## [开源项目中的算法](93%20Algorithms%20In%20Open%20Source\u002FREADME.md)\n\n* YYCache\n* cocos2d-objc\n* bitcoin\n* geohash\n* kafka\n* nginx\n* zookeeper\n* ...\n\n\n\n\n## 15个经典基础算法\n\n\n* [KMP 字符串匹配算法](1%20String\u002FKMP.md)\n* [Hash](3%20Hash%20Table\u002FREADME.md)   \n* [快速排序](6%20Sort\u002FREADME.md)\n* 快速选择SELECT \n* [红黑树 （一种弱\u002F自平衡的`二叉查找树`）](4%20Tree\u002F9-红黑树%20R-B%20tree\u002F红黑树.md)\n* [BFS\u002FDFS （广度\u002F深度优先遍历）](5%20Graph\u002FDFS%20和%20BFS.md)\n* [`A*`寻路算法： 求解最短路径](5%20Graph\u002F最短路径.md)\n* Dijkstra：最短路径算法\n* `SPFA(Shortest Path Faster Algorithm)` 单元最短路径算法  \n* 启发式搜索\n* 遗传算法 `GA`  \n* [DP (动态规划 dynamic programming)](8%20Algorithms%20Analysis\u002F动态规划.md)\n* 图像特征提取之`SIFT` 算法 , 广泛的应用于图像识别，图像检索，3D重建等CV的各种领域 \n* 傅立叶变换  \n\n\n## 推荐阅读\n\n### 刷题必备  \n\n* 《剑指offer》  \n* 《编程之美》  \n* 《编程之法:面试和算法心得》      \n* 《算法谜题》 都是思维题 \n\n### 基础\n\n* 《编程珠玑》Programming Pearls   \n* 《编程珠玑(续)》   \n* 《数据结构与算法分析》   \n* 《Algorithms》 这本近千页的书只有6章,其中四章分别是排序，查找，图，字符串，足见介绍细致     \n\n### 算法设计 \n\n* 《算法设计与分析基础》    \n* 《算法引论》 告诉你如何创造算法   断货        \n* 《Algorithm Design Manual》算法设计手册 红皮书  \n* 《算法导论》 是一本对算法介绍比较全面的经典书籍     \n* 《Algorithms on Strings,Trees and Sequences》    \n* 《Advanced Data Structures》 各种诡异高级的数据结构和算法 如元胞自动机、斐波纳契堆、线段树  600块    \n  \n \n### 延伸阅读 \n   \n* 《深入理解计算机系统》    \n* 《TCP\u002FIP详解三卷》    \n* 《UNIX网络编程二卷》  \n* 《UNIX环境高级编程：第2版》  \n* 《The practice of programming》   Brian Kernighan和Rob Pike    \n* 《writing efficient programs》  优化   \n* 《The science of programming》 证明代码段的正确性   800块一本   \n\n\n## 参考链接和学习网站\n\n### [July 博客](http:\u002F\u002Fblog.csdn.net\u002Fv_july_v) \n\n* 《数学建模十大经典算法》    \n* 《数据挖掘领域十大经典算法》    \n* 《十道海量数据处理面试题》      \n* 《数字图像处理领域的二十四个经典算法》    \n* 《精选微软等公司经典的算法面试100题》 \n* [The-Art-Of-Programming-By-July](https:\u002F\u002Fgithub.com\u002Fjulycoding\u002FThe-Art-Of-Programming-By-July)\n* [微软面试100题](http:\u002F\u002Fblog.csdn.net\u002Fcolumn\u002Fdetails\u002Fms100.html)    \n* [程序员编程艺术](http:\u002F\u002Fblog.csdn.net\u002Fv_JULY_v\u002Farticle\u002Fdetails\u002F6460494)   \n\n\n### 基本算法演示 \n\nhttp:\u002F\u002Fsjjg.js.zwu.edu.cn\u002FSFXX\u002Fsf1\u002Fsfys.html  \nhttp:\u002F\u002Fwww.cs.usfca.edu\u002F~galles\u002Fvisualization\u002FAlgorithms.html  \n  \n   \n### 编程网站\n\n* [leetcode](http:\u002F\u002Fleetcode.com\u002F)   \n* [codetop](https:\u002F\u002Fcodetop.cc\u002Fhome) 企业高频面试题库，刷题必备\n* [openjudge](http:\u002F\u002Fopenjudge.cn\u002F)  开放在线程序评测平台，可以创建自己的OJ小组   \n* [九度OJ](http:\u002F\u002Fac.jobdu.com\u002Findex.php)     \n* 这有个[ACM训练方案](http:\u002F\u002Fwww.java3z.com\u002Fcwbwebhome\u002Farticle\u002Farticle19\u002Fres041.html)   \n\n\n### 网课\n\n[高级数据结构和算法](https:\u002F\u002Fwww.coursera.org\u002Flearn\u002Fgaoji-shuju-jiegou\u002F)  北大教授张铭老师在coursera上的课程。完成这门课之时，你将掌握多维数组、广义表、Trie树、AVL树、伸展树等高级数据结构，并结合内排序、外排序、检索、索引有关的算法，高效地解决现实生活中一些比较复杂的应用问题。当然coursera上也还有很多其它算法方面的视频课程。\n\n\n[算法设计与分析 Design and Analysis of Algorithms](https:\u002F\u002Fclass.coursera.org\u002Falgorithms-001\u002Flecture) 由北大教授Wanling Qu在coursera讲授的一门算法课程。首先介绍一些与算法有关的基础知识，然后阐述经典的算法设计思想和分析技术，主要涉及的算法设计技术是：分治策略、动态规划、贪心法、回溯与分支限界等。每个视频都配有相应的讲义（pdf文件）以便阅读和复习。\n\n\n### 其它\n\n[OI Wiki](https:\u002F\u002Fgithub.com\u002F24OI\u002FOI-wiki\u002F) 主要内容是 OI\u002FACM-ICPC 编程竞赛 (competitive programming) 相关的知识整理, 包括基础知识、常见题型、解题思路以及常用工具等内容。\n\n[labuladong 的算法小抄](https:\u002F\u002Flabuladong.gitee.io\u002Falgo\u002F) 作者整理了很多的解题套路框架，看完获益良多\n\n## 联系\n\n[@移动开发小冉](http:\u002F\u002Fweibo.com\u002Franwj)\n\n\n\n","Learn-Algorithms 是一个用于学习和实践经典算法的项目。该项目涵盖了从基础数据结构如链表、数组、队列到复杂的数据结构如哈希表、树和图等多种算法，并提供了详细的实现代码，全部使用 C 语言编写。它还包含了一些高级主题，比如动态规划、贪心算法等设计思想的学习材料以及面试中常见的算法题目解析。此外，项目还整理了处理海量数据时常用的算法技巧。适合计算机科学专业的学生、准备技术面试的求职者以及任何希望深入理解并掌握算法的人士使用。","2026-06-11 03:06:19","top_language"]