百科问答小站 logo
百科问答小站 font logo



学习算法有什么入门级的书 ? 或者学习资料。(英语不太好) 第1页

  

user avatar   cheng-xu-yuan-ke-zhan 网友的相关建议: 
      

学习算法应该边看书,边敲代码,边做题练习,之后在实际项目中寻找应用的机会。

学习算法也是要分三步走:

第一步先夯实基础,学习每个算法的基本思想,解题思路和应用场景;

第二步对学习的算法知识进行归纳总结,提升对算法的熟练度,做到融会贯通;

第三步则是提升思考高度,将各类算法之间的区别和联系搞清楚,做到举一反三。

一、基础阶段

在这个阶段,首先要明确我们为什么要学习算法,要弄清楚算法有什么用,而不是屠龙术。学习算法是为了提升自己的逻辑思维能力,提升编程思想,在做到对应业务的时候,能够想到可以通过某某算法来实现,而不是通过一对笨方法,写一堆“笨重”的代码。

在这个阶段推荐大家看以下几本书:

1. 《算法图解》:

这本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。

书中的前三章将帮助你打下基础,带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法等

2. 《算法第 4 版》:

这本书全面讲述算法和数据结构的必备知识,是算法领域的经典参考书,内容全面,且和实际应用相结合,用丰富的视觉元素展示的示例,精心设计的代码,详尽的历史和科学背景知识,各种难度的练习让新手容易上手。

这本书使用 Java 写的示例,虽然编程语言都是相通的,但是买之前要知道这一点。


3. 《数据结构和算法分析 - C 语言描述》

本书是国外数据结构与算法分析方面的标准教材,介绍了数据结构(大量数据的组织方法)以及算法分析(算法运行时间的估算)。本原书曾被评为20世纪顶尖的30部计算机著作之一。

在本书中,作者更加精炼并强化了他对算法和数据结构方面创新的处理方法。通过 C 语言程序的实现,着重阐述了抽象数据类型的概念,并对算法的效率、性能和运行时间进行了分析。

全书特点如下:

●专用一章来讨论算法设计技巧,包括贪婪算法、分治算法、动态规划、随机化算法以及回溯算法 ●介绍了当前流行的论题和新的数据结构,如斐波那契堆、斜堆、二项队列、跳跃表和伸展树 ●安排一章专门讨论摊还分析,考查书中介绍的一些高级数据结构 ●新开辟一章讨论高级数据结构以及它们的实现,其中包括红黑树、自顶向下伸展树等内容 ●合并了堆排序平均情况分析的一些新结果

二、进阶阶段

1.《算法导论(原书第3版)》

这本书是一本算法领域的大辞典,最权威,最详细,覆盖面最广,当然书内容也最多。适合进阶阶段学习。


2.《编程珠玑》

本书是计算机科学方面的经典名著。书的内容围绕程序员面对的一系列实际问题展开。

在书中,作者选取许多具有典型意义的复杂编程和算法问题,生动描绘了历史上众大师们在探索解决方案中发生的轶事、走过的弯路和不断精益求精的历程,引导读者像真正的程序员和软件工程师那样富于创新性地思考,并透彻阐述和总结了许多独特而精妙的设计原则、思考和解决问题的方法以及实用程序设计技巧。

解决方案的代码均以C/C++语言编写,不仅有趣,而且有很大的实战示范意义。每章后所附习题极具挑战性和启发性,书末给出了简洁的解答。


3.《剑指 offer》

本书是面试必备啊,本书讨了论面试每一环节需要注意的问题;面试需要的基础知识:从编程语言、数据结构及算法三方面总结程序员面试知识点;高质量代码:讨论影响代码质量的3个要素(规范性、完整性和鲁棒性),强调高质量代码除完成基本功能外,还能考虑特殊情况并对非法输入进行合理处理;

解题思路:总结编程面试中解决难题的有效思考模式,如在面试中遇到复杂难题,应聘者可利用画图、举例和分解这3种方法将其化繁为简,先形成清晰思路再动手编程;优化时间和空间效率:读者将学会优化时间效率及空间换时间的常用算法,从而在面试中找到最优解;面试必备能力:总结应聘者如何充分表现学习和沟通能力,并通过具体面试题讨论如何培养知识迁移、抽象建模和发散思维能力;

综合面试案例:总结哪些面试举动是不良行为,而哪些表现又是面试官所期待的行为;英文版面试题增补,优选久经欧美知名企业面试考验的经典题目,帮助国内读者开阔视野、增补技能。


不要一直看书,一边看书一边跟着书里的例子敲敲代码,熟能生巧。并且刷一刷 LeetCode。

1. 常用的数据结构:数组、字符串、链表、树(如二叉树)等
2. 常用的算法:分治、贪心、穷举、动态规划、回溯、二分算法、深度优先搜索等


推荐一个算法可视化解法的项目:


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

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

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

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

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

也是算法题网站,同上。

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

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

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

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


对你有用的话,点个赞再走吧~


我是程序员客栈,领先的程序员自由工作平台




  

相关话题

  公民身份号码有可能是素数吗? 
  非计算机专业,想刷leetcode,请问在此之前需要做什么准备? 
  为什么得不到「自由意志」会让那么多人难以接受? 
  学物理为什么会觉得计算机很难? 
  在机器学习模型的训练期间,大概几十分钟到几小时不等,大家都会在等实验的时候做什么? 
  高斯模糊的原理是什么,怎样在界面中实现? 
  为什么说程序员要贷款买房之前最好先学好数据结构和算法? 
  刷完 LeetCode 是什么水平?能拿到什么水平的 offer? 
  一个关于拓扑排序的扩展问题,可以做到的最优复杂度是? 
  如何正确地用 Test Driven Development 实现算法? 

前一个讨论
Dior 的「旷野」好闻吗?
下一个讨论
如何快速入行数据分析师?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利