{"id":15129917,"url":"https://github.com/nonstriater/learn-algorithms","last_synced_at":"2025-05-14T04:08:30.282Z","repository":{"id":16697122,"uuid":"19453715","full_name":"nonstriater/Learn-Algorithms","owner":"nonstriater","description":"算法学习笔记","archived":false,"fork":false,"pushed_at":"2021-12-23T03:59:42.000Z","size":4184,"stargazers_count":8513,"open_issues_count":7,"forks_count":2401,"subscribers_count":371,"default_branch":"master","last_synced_at":"2025-04-10T22:35:08.510Z","etag":null,"topics":["algorithm"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nonstriater.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-05T11:35:04.000Z","updated_at":"2025-04-10T17:07:41.000Z","dependencies_parsed_at":"2022-07-08T16:47:10.142Z","dependency_job_id":null,"html_url":"https://github.com/nonstriater/Learn-Algorithms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonstriater%2FLearn-Algorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonstriater%2FLearn-Algorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonstriater%2FLearn-Algorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonstriater%2FLearn-Algorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nonstriater","download_url":"https://codeload.github.com/nonstriater/Learn-Algorithms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254069849,"owners_count":22009558,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm"],"created_at":"2024-09-26T02:23:54.257Z","updated_at":"2025-05-14T04:08:25.259Z","avatar_url":"https://github.com/nonstriater.png","language":"C","readme":"#The file is in Chinese\n\n\u003e算法虐我千百遍，我待算法如初恋\n\n这里的内容是我学习算法过程的一些记录，希望能一直坚持下去。\n\n## 学习方法\n \n* 把所有经典算法写一遍  \n* 看算法有关源码   \n* 加入算法学习社区，相互鼓励学习(加我vx:tiger-ran, 备注入群理由, 拉你入群)   \n* 看经典书籍  \n* 刷题   \n\n\n## 基本数据结构和算法\n\n这些算法全部自己敲一遍：\n\n### [链表](2%20List/README.md)\n\n* 链表\n* 双向链表\n\n### [数组](2%20List/数组.md)\n\n* [数组数列问题](9%20Algorithms%20Job%20Interview/5%20数组数列问题.md)\n\n数组和链表结构是基础结构，散列表、栈、队列、堆、树、图等等各种数据结构都基于数组和链表结构实现。\n\n### [队列](2%20Queue/README.md)\n \n* 队列\n* 堆栈\n\n### [哈希表 HashTable](3%20Hash%20Table/README.md)\n\n* 散列函数\n* 碰撞解决\n\n### [字符串算法](1%20String/README.md)\n\n* 子串查找 [字符串常见题目参考这里](9%20Algorithms%20Job%20Interview/1%20字符串.md) \n    * BF算法  \n    * KMP算法  \n    * BM算法  \n* 正则表达式\n* 数据压缩\n* 排序\n\n\n### [树](4%20Tree/README.md)\n\n* 二叉树  [快速排序](6%20Sort/README.md)就是个二叉树的前序遍历，归并排序就是个二叉树的后序遍历  \n* [二叉查找树BST](4%20Tree/2-二叉查找树/二叉查找树.md)  有序的二叉树，中序遍历结果是递增的\n* [平衡二叉树 AVL树](4%20Tree/3-平衡树AVL/README.md)   绝对平衡二叉树；\n* [红黑树](4%20Tree/9-红黑树%20R-B%20tree/红黑树.md)  弱平衡二叉树；使用广泛\n* [B树](4%20Tree/7-B树/B树.md)\n* [B+树](4%20Tree/7-B树/B+树.md)  mysql 索引使用 B+树 的数据结构\t  \n* [字典树trie](4%20Tree/4-字典树Trie/README.md) 字典树也叫前缀树，单词查找树\n* [二叉堆](4%20Tree/8-堆/堆.md)  \n* [伸展树](4%20Tree/5-伸展树/伸展树.md)\n* [后缀树](4%20Tree/6-后缀树/后缀树.md)\n* 斐波那契堆(Fibonacci Heap)   \n* 最优二叉树(赫夫曼树)  \n\n\n\n### [图的算法](5%20Graph/README.md)\n\n* 图的存储结构和基本操作（建立，遍历，删除节点，添加节点）   \n* 最小生成树  \n* 拓扑排序  \n* 关键路径  \n* 最短路径: Floyd,Dijkstra,bellman-ford,spfa  \n  \n  \n  \n### [排序算法](6%20Sort/README.md)\n\n**交换排序算法**\n\n* 冒泡排序\n* 插入排序    \n* 选择排序    \n* 希尔排序\n* 快排   \n* 归并排序  \n* 堆排序\n\n**线性排序算法**\n    \n* 桶排序 \n  \n  \n### [查找算法](7%20Search/README.md)  \n\n\n* 哈希表： O(1)  [hashtable实现参考这里](../3%20Hash%20Table/README.md)\n* 有序表查找：二分查找 \n* 顺序表查找：顺序查找, 复杂度O(N)  \n* 分块查找： 块内无序，块之间有序；可以先二分查找定位到块，然后再到`块`中顺序查找  \n* 动态查找:  二叉排序树，AVL树，B- ，B+（这里之所以叫 `动态查找表`，是因为表结构是查找的过程中动态生成的）\n   \n\n\n## [算法设计思想](8%20Algorithms%20Analysis/README.md)\n\n\n* [递归](8%20Algorithms%20Analysis/递归.md) \n* [分治算法](8%20Algorithms%20Analysis/分治算法.md) \n* [动态规划](8%20Algorithms%20Analysis/动态规划.md)  \n* [回溯法](8%20Algorithms%20Analysis/回溯法.md)\n* [迭代法](8%20Algorithms%20Analysis/迭代法.md)  \n* [穷举搜索法](8%20Algorithms%20Analysis/穷举搜索法.md)   \n* [贪心算法](8%20Algorithms%20Analysis/贪心算法.md) \n\n\n\n## [面试算法题目](9%20Algorithms%20Job%20Interview/README.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/README.md)\n\n* Hash映射/分而治之\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/README.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/KMP.md)\n* [Hash](3%20Hash%20Table/README.md)   \n* [快速排序](6%20Sort/README.md)\n* 快速选择SELECT \n* [红黑树 （一种弱/自平衡的`二叉查找树`）](4%20Tree/9-红黑树%20R-B%20tree/红黑树.md)\n* [BFS/DFS （广度/深度优先遍历）](5%20Graph/DFS%20和%20BFS.md)\n* [`A*`寻路算法： 求解最短路径](5%20Graph/最短路径.md)\n* Dijkstra：最短路径算法\n* `SPFA(Shortest Path Faster Algorithm)` 单元最短路径算法  \n* 启发式搜索\n* 遗传算法 `GA`  \n* [DP (动态规划 dynamic programming)](8%20Algorithms%20Analysis/动态规划.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/IP详解三卷》    \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://blog.csdn.net/v_july_v) \n\n* 《数学建模十大经典算法》    \n* 《数据挖掘领域十大经典算法》    \n* 《十道海量数据处理面试题》      \n* 《数字图像处理领域的二十四个经典算法》    \n* 《精选微软等公司经典的算法面试100题》 \n* [The-Art-Of-Programming-By-July](https://github.com/julycoding/The-Art-Of-Programming-By-July)\n* [微软面试100题](http://blog.csdn.net/column/details/ms100.html)    \n* [程序员编程艺术](http://blog.csdn.net/v_JULY_v/article/details/6460494)   \n\n\n### 基本算法演示 \n\nhttp://sjjg.js.zwu.edu.cn/SFXX/sf1/sfys.html  \nhttp://www.cs.usfca.edu/~galles/visualization/Algorithms.html  \n  \n   \n### 编程网站\n\n* [leetcode](http://leetcode.com/)   \n* [codetop](https://codetop.cc/home) 企业高频面试题库，刷题必备\n* [openjudge](http://openjudge.cn/)  开放在线程序评测平台，可以创建自己的OJ小组   \n* [九度OJ](http://ac.jobdu.com/index.php)     \n* 这有个[ACM训练方案](http://www.java3z.com/cwbwebhome/article/article19/res041.html)   \n\n\n### 网课\n\n[高级数据结构和算法](https://www.coursera.org/learn/gaoji-shuju-jiegou/)  北大教授张铭老师在coursera上的课程。完成这门课之时，你将掌握多维数组、广义表、Trie树、AVL树、伸展树等高级数据结构，并结合内排序、外排序、检索、索引有关的算法，高效地解决现实生活中一些比较复杂的应用问题。当然coursera上也还有很多其它算法方面的视频课程。\n\n\n[算法设计与分析 Design and Analysis of Algorithms](https://class.coursera.org/algorithms-001/lecture) 由北大教授Wanling Qu在coursera讲授的一门算法课程。首先介绍一些与算法有关的基础知识，然后阐述经典的算法设计思想和分析技术，主要涉及的算法设计技术是：分治策略、动态规划、贪心法、回溯与分支限界等。每个视频都配有相应的讲义（pdf文件）以便阅读和复习。\n\n\n### 其它\n\n[OI Wiki](https://github.com/24OI/OI-wiki/) 主要内容是 OI/ACM-ICPC 编程竞赛 (competitive programming) 相关的知识整理, 包括基础知识、常见题型、解题思路以及常用工具等内容。\n\n[labuladong 的算法小抄](https://labuladong.gitee.io/algo/) 作者整理了很多的解题套路框架，看完获益良多\n\n## 联系\n\n[@移动开发小冉](http://weibo.com/ranwj)\n\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonstriater%2Flearn-algorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnonstriater%2Flearn-algorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonstriater%2Flearn-algorithms/lists"}