
由于我一直强调数据结构和算法学习的重要性,因此一些读者经常问我,应该在多大程度上学习数据结构和算法?老实说,我不知道如何回答这个问题,这主要取决于您想学多少,但是对于这个问题,我将简要总结一下我所学算法和我认为的算法的知识点. 值得学习. 这些算法和数据结构的学习大多是零散的,没有一本书涵盖所有内容. 这里是一些我认为值得学习的算法和数据结构. 当然,我还将整理一些我读给您的好文章. 您也可以在消息区域中添加.
首先,最基本的算法
1. 时间复杂度
2. 空间复杂度

通常,第一次接触是时间复杂度和空间复杂度的研究. 这两个概念以及如何计算是必不可少的,并且必须首先学习,主要包括最大复杂度,平均复杂度等. 只需通过博客搜索即可进行搜索.
第二个基本数据结构
1,线性表
列表(必需)链接列表(必需)跳转列表(了解原理,应用程序,最后由自己实现)并检查集合(建议学习刷牙问题)不用说,链接列表和列表必须是,但重点是链接列表.
2. 堆叠和排队
堆栈(必需)队列(必需)优先级队列,堆(必需)多级反馈队列(原理和应用程序),尤其是优先级队列. 重画问题时,它仍然经常被使用,排队和堆栈,是最基本的数据结构,必须学习. 您可以通过博客学习.

3. 哈希表(必填)
冲突解决方法: 开放式寻址方法,链式地址方法,重新哈希方法,建立公共溢出区域(必须学习),布隆过滤器(原理和应用)4,树
二叉树: 各种遍历(递归和非递归)(必需)霍夫曼树和编码(原理和应用)AVL树(必需)B树和B +树(原理和应用)前缀树(原理和应用)应用)红黑树(原理和应用)线段树(原理和应用)树还是有很多知识的. 建议阅读本书,可以阅读《算法第四版》.

5. 数组
树数组
矩阵(必填)
事实上,我还没有了解树数组、、、、、
三种常见算法
1. 十种排名算法
简单排序: 插入排序,选择排序,冒泡排序(必填)
分治法: 快速分类,合并分类(必选,快速分类还需要注意中心轴的选择方法)
分配排序: 桶排序,基数排序
树排序: 堆排序(必需)
其他: 计数排序(必填),希尔排序
如果您不了解十大算法,我仍然建议您阅读本书,因为阅读本书之后,您不仅会知道如何编写该算法,而且还会知道他的来历. 推荐的书是《算法第四版》. 本书非常详细,并配有大量图形演示. 这很容易理解.
2. 图论算法
图形表示: 邻接矩阵和邻接表
Traversal算法: 深度搜索和广度搜索(必需)
最短路径算法: Floyd算法的数据包括哪些,Dijkstra(必需)
最小生成树算法: Prim,Kruskal(必需)
实用的常用算法: 关键路径,拓扑排序(原理和应用)
![]()
二部图匹配: 匹配,匈牙利算法(原理和应用)
扩展: 集中性算法,社区发现算法(原理和应用)
该图仍然很困难,但是我认为该图涉及的许多算法都非常实用,例如最短路径的计算等,该图是相关的,我仍然建议阅读此处,您可以看到“算法第四版“”.
3. 搜索和回溯算法
贪婪算法(必需)
启发式搜索算法: 一种*寻路算法(理解)
地图着色算法,N皇后问题,最佳处理顺序
旅行商问题
这很方便算法的数据包括哪些,因为它们都与某些算法有关. 我认为,如果可以,您可以全部学习. 必须学习诸如贪婪算法的想法. 建议通过刷问题来学习,letetcode直接刷主题.
4. 动态计划
树DP: 01背包问题
![]()
线性DP: 最长的公共子序列,最长的公共子串
间隔DP: 矩阵最大值(总和和积)
数字DP: 数字游戏
状态压缩DP: 商户
我认为动态编程是最困难的算法思想. 我记得当我第一次接触动态编程时,我曾看过01背包的问题. 很长一段时间我都不了解. 我明白了. 后来我了解了基础知识. 有想法,但我做不到,但我可以理解答案. 一口气,让我们依次刷写Leetcdoe主题中的数十个主题,以掌握动态规划例程并拥有我自己的模板集. 但老实说,动态编程确实是很多他妈的考试. 您必须掌握算法并刷问题. 建议在这里首先了解什么是动态编程,然后再阅读leetcode主题,无论如何,上述类型的问题通常都是如此. 以后有时间的时候,我还会写一些我学到的例程,这与我之前编写的递归有些相似. 这是一种体验.

5. 字符匹配算法
正则表达式模式匹配: KMP,Boyer-Moore. 我写了两篇关于字符串匹配的文章,感觉很好. 阅读这两篇文章后,我认为您几乎了解kmp和Boyer-Moore.
6. 流相关算法
最大流量: 最短扩展路径,Dinic算法,最大流量最小割伤: 最大利润问题,平方访问问题,最小成本最大流量: 最小成本路径,消遣. 我只知道一些算法. 有兴趣的人可以学习.
摘要
对于上面设计的算法,我提供了感觉不错的文章. 我建议您收集它们,然后可以使用零散的时间来阅读它们. 有人可能认为上述算法太多了. 说实话,我认为不是很多,特别是对于在校学生,上述算法可能不太了解,但至少必须了解它们. 至于书籍,如果您不了解基本的数据结构,建议您阅读“数据结构和算法”的相关书籍,例如“大数据结构”和“数据结构和算法的分析”. 如果您有一定的基础,例如了解链表,堆栈和队列,则可以阅读“算法第四版”,但这本书是用Java实现的,但是我认为,如果您只学过C,就可以理解它.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-172945-1.html
2的不会卡
电影很期待
好棒啊