今天跟大家分享一期干货,适合刚入行的小伙伴或者正在准备转行的小伙伴,接下来就看看程序员都需要必备的算法都有哪些。
一、算法最最基础
1、时间复杂度
2、空间复杂度
一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如何计算,是必须学的,也是必须最先学的。
算法:
1、排序算法:快速排序、归并排序、计数排序
2、搜索算法:回溯、递归、剪枝
3、图论:最短路径、最小生成树、网络流建模
4、动态规划:背包问题、最长子序列、计数问题
5、基础技巧:分治、倍增、二分法、贪心算法
二、基础数据结构
1、线性表
- 列表(必学)
- 链表(必学)
- 跳跃表(知道原理,应用,最后自己实现一遍)
- 并查集(建议结合刷题学习)
不用说,链表、列表必须,不过重点是链表。
数据结构:
1、数组和链表
2、栈与队列
3、树和图
4、哈希表
5、大/小跟堆,可并堆
6、字符串:字典树、后缀树
3、哈希表(必学)
- 碰撞解决方法:开放定址法、链地址法、再次哈希法、建立公共溢出区(必学)
- 布隆过滤器(原理与应用)
4、树
- 二叉树:各种遍历(递归与非递归)(必学)
- 哈夫曼树与编码(原理与应用)
- AVL树(必学)
- B 树与 B 树(原理与应用)
- 前缀树(原理与应用)
- 红黑树(原理与应用)
- 线段树(原理与应用)
三、各种常见算法
1、十大排序算法
- 简单排序:插入排序、选择排序、冒泡排序(必学)
- 分治排序:快速排序、归并排序(必学,快速排序还要关注中轴的选取方式)
- 分配排序:桶排序、基数排序
- 树状排序:堆排序(必学)
- 其他:计数排序(必学)、希尔排序
2、图论算法
- 图的表示:邻接矩阵和邻接表
- 遍历算法:深度搜索和广度搜索(必学)
- 最短路径算法:Floyd,Dijkstra(必学)
- 最小生成树算法:Prim,Kruskal(必学)
- 实际常用算法:关键路径、拓扑排序(原理与应用)
- 二分图匹配:配对、匈牙利算法(原理与应用)
- 拓展:中心性算法、社区发现算法(原理与应用)
现实世界的需求是千变万化的,即使你掌握再多的算法也不可能直接照搬某个算法去解决你面对的问题。
关键是掌握其中的本质。就好像武功中的,看山还是山,看水还是水。无招胜有着的境界。
没有很好的学历想要拿高薪,必须掌握一门技术,可以让你在同龄人中实现弯道超车。