程序员掌握的核心算法大学生快来学

如题所述

程序员掌握核心算法还不收录

1、十大排序算法

简单排序:插入排序、选择排序、冒泡排序(必学)

分治排序:快速排序、归并排序(必学,快速排序还要关注中轴的选取方式)

分配排序:桶排序、基数排序

树状排序:堆排序(必)

其他:计数排序(必学)、希尔排序对干十大算法的学习,假如你不大懂的话,那么我还是挺推荐你去看书的,因为看了书,你可能不仅仅知道这个算法怎么写,还能知道他是怎么来的。推荐书籍是《算法第四版》,这本书讲的很详细,而且配了很多图演示,还是挺好懂的。

3、搜索与回溯算法

贪心算法(必学)

启发式搜索算法:A*寻路算法(了解)

地图着色算法、N 皇后问题、最优加工顺序

旅行商问题这方便的只是都是一些算法相关的,我觉得如果可以,都学一下。像贪心算法的思想,就必须学的了。建议通过刷题来学习,leetcode 直接专题刷。

4、动态规划

树形DP:01背包问题

线性DP:最长公共子序列、最长公共子串

区间DP:矩阵最大值(和以及积)

数位DP:数字游戏

状态压缩DP:旅行商

这里建议先了解动态规划是什么,之后 leetcode专题刷,反正就一般上面这几种题型。后面有时间我也写一下我学到的套路,有点类似于我之前写的递归那样,算是一种经验。

5、字符匹配算法

正则表达式

模式匹配:KMP、Boyer-Moore我觉得你就差不多懂 kmp 和 Boyer-Moore 了。

6、流相关算法

最大流:最短增广路、Dinic 算法最大流最小割:最大收益问题、方格取数问题最小费用最大流:最小费用路、消遣这方面的一些算法,我也只了解过一些,感兴趣的可以学习下。

温馨提示:答案为网友推荐,仅供参考