程序员须掌握哪些算法

作者:程序员客栈
链接:https://www.zhihu.com/question/23148377/answer/714596562
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

程序员必须掌握的常用算法正如 @力扣(LeetCode)所讲,主要包括以下内容:

算法:

1、排序算法:快速排序、归并排序、计数排序
2、搜索算法:回溯、递归、剪枝
3、图论:最短路径、最小生成树、网络流建模
4、动态规划:背包问题、最长子序列、计数问题
5、基础技巧:分治、倍增、二分法、贪心算法

数据结构:

1、数组和链表
2、栈与队列
3、树和图
4、哈希表
5、大/小跟堆,可并堆
6、字符串:字典树、后缀树

还可以在此基础上细分,例如单单排序算法就可以分为以下十种:

对于学习算法,我推荐在力扣上刷题:

力扣 (LeetCode) 官网 - 全球极客挚爱的技术成长平台​leetcode-cn.com/正在上传…重新上传取消​

此外,推荐一个用动画的形式演示 LeetCode 上的题目的项目:

https://github.com/MisterBooo/LeetCodeAnimation​github.com/MisterBooo/LeetCodeAnimation

例如基础的冒泡排序法演示如下:

该项目正在完善中,已经用动画的形式演示出了一下题目:

因为知乎排版没有表格,所以我就截图了,以上内容详见:

MisterBooo/LeetCodeAnimation​github.com/MisterBooo/LeetCodeAnimation正在上传…重新上传取消​

此外,再推荐一些免费的学习资源:

在学习的时候,要想为什么要这样设计,优点在哪里,有什么改进方法,逐步通过这样的方式提升逻辑思维能力。不懂就查,找学习资料和相关解答,坚持学习。

1. 算法学习 LintCode:https://www.lintcode.com/

算法学习网站,上去每天刷两道算法题,走遍天下都不怕。

2. 算法学习 LeetCode:https://leetcode.com/

也是算法题网站,同上。

3. 算法学习 LeetCode 中文站:https://leetcode-cn.com/

这个是上面算法题网站的中文站点,英文不好的可以刷这个,英文好的推荐去刷英文网站的题目,还能提升英语能力。

4. 中国大学MOOC网:https://www.icourse163.org/

中国大学MOOC是由网易与高教社携手推出的在线教育平台,承接教育部国家精品开放课程任务,向大众提供中国知名高校的MOOC课程。在这里,每一个有意愿提升自己的人都可以免费获得更优质的高等教育。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值