from 算法之美作者:  http://blog.csdn.net/tiandijun/article/details/50550056

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

数据结构与算法设计是CS相关专业的必修课,也是IT公司笔试面试的重点。网上这方面的资料多如牛毛,我列出了一些我认为非常值得推荐的资源,供有需求的读者研习之用。

1、法国鲁昂大学(University of Rouen )Thierry Lecroq 教授关于字符串(模式)匹配算法的介绍内容

http://igm.univ-mlv.fr/~lecroq/string/node1.html

如果说道字符串匹配算法,你会想到哪些?只有KMP吗?那你弱爆了:) 还不快来看Thierry Lecroq 教授的主页,在上述网站上,教授给出了超过30种模式匹配算法的详细介绍(有图有文有例子)和实现代码。实在是不可多得但又未被人知的宝藏。国内很多教科书、文章、博客都是以讹传讹,连KMP和MP算法的不同都搞不清楚,常常将二者混为一谈,殊不知它们是两个算法。这个问题讲起来话太长,总之各位还是要明辨真伪,自身水平挺高了,才不会收到误导。

2、美国佛罗里达国际大学Mark Allen Weiss教授的主页http://users.cis.fiu.edu/~weiss/

Weiss教授是Knuth的徒孙(因为他博士导师是塞奇威克)。他在教书育人上的成就其实比他在学术上的成就更大。其关于数据结构方面的教材在全世界大学范围内被广泛采用(后面我还要推荐他的著作),并曾荣获SIGCSE计算机科学教育杰出成就奖。他的数据结构书籍有多个版本,既有Java版,又有C++版,还有C版。而他的主页提供了所有这些书籍中的源代码下载。你能想过的数据结构,他基本都实现过,所以具有极高的参考价值。

3、Leetcode

这个网站名气很大!CSDN上到处是其中题目的解答。相信读者可能已经了解过,这是美国一个IT笔试面试题目的online judge系统。里面搜罗了超过300道算法与数据结构相关的题目。刷Leetcode绝对是训练思维技巧、增进编码能力的好方法。我偶尔也从里面挑几道题目做做,觉得是一件很有趣的事情,我思故我在:) 但我其实有种相见恨晚的感觉。我知道它的时候,我的算法之美已经交稿编排了,(尽管后来发现我的书和Leetcode选的很多题目有很多类似的)但如果我早日知道它,应该会为我的新书增加更多精彩。Anyway,各位可千万别错过它。当然,Leetcode上题目的答案到处都是,但我还是建议你先自己做做看,抄别人的答案就没意思了,自己先做一遍再去看看别人有没有更好的方法,或许更有帮助。

4、“那谁的技术博客”的主页http://www.cppblog.com/converse/category/974.html

其实我本来想推荐July的主页的,他在CSDN上名气已经很大了,何况更有超过千万的超人气访问量。直到我看到了知乎的帖子http://www.zhihu.com/question/24957182。我不想评论他的事情,公道自在人心。我推荐“那谁的技术博客”主要是因为上述帖子中讲到July的很多内容抄袭了这个博客,我才寻根溯源找到原帖。我转而推荐原帖,也是表示对原创的一种支持。博主用了很长时间对Btree、红黑树、AVL树、字典树、二分查找树等树形搜索结构进行了总结,给出了难能可贵的实现代码,又分享给大家,希望大家能在用别人无私奉献的内容时,保留一份尊重。尊重他人也尊重自己。

下面是一些书籍的点评(注意我用的词是点评,所以不是我列的所有书都是推荐。你要看清楚我具体说的内容)

1、两本神作

Knuth的《计算机程序设计艺术》,绝对业界巨擘,开山鼻祖,旷世奇书。国内中英文都已经有了,但是我非常推荐大家阅读。总之一句话,好书也不一定适合你。我在这评论它,因为我确实看过。别说没告诉你,书里的代码是用汇编语言写的,而且是Knuth大神自创的一种汇编语言,你要想想清楚,我想更多看本文的读者应该是处于学习阶段的,所以不要好高骛远。另外一本是《算法导论》,这个名气同样很大,对此我不做点评,因为我没看过,我不能对我没看过的东西做推荐。

2、Weiss教授的书

Weiss教授的书解决了我在早年学习数据结构时候的很多问题。我当时看的是清华出的C++版的影印版。中文版我作为比照参考最初也读过,后来也是因为翻译的不太理想就放弃了。现在不知道中文版的情况如何。Weiss教授的书还有Java版的。我主要看的是下面两本,强力推荐

  • Data Structures and Problem Solving Using C++
  • Data Structures and Algorithm Analysis in C++

3、计算机算法设计与分析,王晓东,电子工业出版社

我觉得这是中国人编写的非常好的教材,贪婪、分治、回溯、动态规划、概率算法等几大算法设计思想都有覆盖,并配合以许多典型问题的分析,还有关于P/NP问题的介绍。这本书可以作为研究算法的参考书来看。我自己看的是第2版,很老了,现在应该有更新版。

其实数据结构的书我看过很多很多,所以我这确实还有一个不推荐的名单,但是那些书的推荐理由就跟Knuth的神作完全不一样了。为了避免给大家带来困扰我就不列出这个不推荐的名单了,原因你懂的。

另外,推荐两部课外的业余读物(跟数据结构无关,但跟算法有关)

5、图灵的秘密,查尔斯·佩措尔德,人民邮电出版社

这是对图灵生平和他论文的解读。作者查尔斯·佩措尔德是大名鼎鼎的技术作家,他的另外一本神作是《Code:the hidden language behind the computer software and hardware》(中译本《编码:隐匿在计算机软硬件背后的语言》,译者不才正是在下》。图灵为了给出算法的精确定义(进而解决判定性问题)而石破天惊地构造了图灵机这种神器,这其实是现代计算机算法研究的一个重要开端。如果你连算法是什么都没定义好,那何谈算法研究呢?而要理解图灵当初提出的机器到底是啥,看这本书就对了。当然《图灵的秘密》这本书读起来其实有一定难度,如果你学过计算理论课程的话最好,或者你可以先读下面这本书,这会帮你更好地理解《图灵的秘密》。

6、计算理论导引,Michael Sipser

这是大学里计算理论课程的教材。但是我还是非常推荐你作为课外读物来读(如果你没学过相关课程的话)。如果说图灵的研究离我们很遥远,那么这本书其实拉近了图灵机和我们的距离。这本书会告诉你:我们讨论算法复杂度的大O表示法,本源就在于它是通过图灵机(方格的移动)来定义的。你在王晓东的书以及算法导论里会看到NP问题,而我更建议你看计算理论导引来了解P,NP,NP完全问题的本质。

附 <算法之美>介绍

本书围绕算法与数据结构这个话题,循序渐进、深入浅出地介绍了现代计算机技术中常用的四十余个经典算法,以及回溯法、分治法、贪婪法和动态规划等算法设计思想。在此过程中,本书也系统地讲解了链表(包括单向链表、单向循环链表和双向循环链表)、栈、队列(包括普通队列和优先级队列)、树(包括二叉树、哈夫曼树、堆、红黑树、AVL树和字典树)、图、集合(包括不相交集)与字典等常用数据结构。同时,通过对二十二个经典问题(包括约瑟夫环问题、汉诺塔问题、八皇后问题和骑士周游问题等)的讲解,逐步揭开隐匿在数据结构背后的算法原理,力图帮助读者夯实知识储备,激活思维技巧,并最终冲破阻碍编程能力提升的重重藩篱。

本书涉及的45个算法:

BF算法、MP算法、KMP算法、BM算法、BMH算法、Needleman-Wunsch算法、Smith-Waterman算法、N-gram算法、Soundex算法、Phonix算法、二分查找算法、欧几里得算法、二叉树遍历算法、哈夫曼算法、广度优先遍历算法、深度优先遍历算法、Dijkstra算法、Floyd算法、最短路径的动态规划算法、Kruskal算法、Prim算法、AVL树旋转算法、红黑色的操作算法、直接定址法、除留余数法、平方取中法、乘余取整法、折叠法、BKDR散列算法、RS散列算法、FNV散列算法、线性探查法、二次探查法、双重散列法、并查集的路径压缩算法、直接插入排序算法、二分插入排序算法、希尔排序算法、鸡尾酒排序算法、冒泡排序算法、快速排序算法、归并排序算法、堆排序算法、计数排序算法、排序算法。

以及22个经典问题:

Z字形编排问题、大整数乘法问题、九宫格问题、约瑟夫环问题、魔术师发牌问题、拉丁方阵问题、维吉尼亚加密问题、括号匹配问题、停车场模拟问题、舞伴问题、杨辉三角问题、迷宫问题、八皇后问题、骑士周游问题、传染病问题、汉诺塔问题、文字游戏问题、游程编码问题、旅游交通路线问题、道路修建问题、拼写检查问题、犯罪团伙问题。

本书附录中笔试面试题目的参考答案

常见C++笔试题目整理(含答案)1

常见C++笔试题目整理(含答案)2

常见C++笔试题目整理(含答案)3

常见C++笔试题目整理(含答案)4

常见C++笔试题目整理(含答案)5

常见C++笔试题目整理(含答案)6

常见C++笔试题目整理(含答案)7

常见C++笔试题目整理(含答案)8

常见C++笔试题目整理(含答案)9

常见C++笔试题目整理(含答案)10


更多,请关注http://blog.csdn.net/tiandijun/,欢迎交流!

算法与数据结构学习资料及面试相关推荐

  1. 算法与数据结构学习路线

    随着科学技术的发展,人工智能已经逐渐渗透到各个行业,这是一个相当有前景的专业领域. 其中,算法工程师这一职位更是非常火爆,在急缺大量人才的同时,也吸引了众多求职者,那么,初学者该如何学好算法呢? 算法 ...

  2. 【算法和数据结构学习笔记】整合版

    文章目录 算法 前缀和 双指针法 四数之和 分治算法 Offer 58 II 左旋转字符串 回溯算法 动态规划 数据结构 数组 & String & 双指针 字符串 反转字符串 T54 ...

  3. 海量开发者学习资料!面试必备!速速来领

    [1]Spring boot微服务开发天气预报系统视频教程 https://pan.baidu.com/s/1joz7flyztCq8oklBlsz8dQ    提取密码:cpz7 [2]2018年最 ...

  4. 谈谈算法(数据结构学习笔记)

    文章目录 什么是算法 算法举例 高斯简算1到100加法 算法的五个基本特征 算法设计的要求 什么是算法 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作 ...

  5. 算法和数据结构开篇:开发面试前,不得不掌握的8种数据结构

    by Fahim ul Haq(CEO at Educative) Niklaus Wirth, a Swiss computer scientist, wrote a book in 1976 ti ...

  6. 【C++算法与数据结构学习笔记------用循环数组实现队列】

    照王晓东<数据结构>(C++语言版)上打的,以备留用. 1 #include <iostream> 2 using namespace std; 3 template<t ...

  7. 尚硅谷算法与数据结构学习笔记05 -- 递归

    1.递归介绍 1.1.递归应用场景 看个实际应用场景, 迷宫问题(回溯), 递归(Recursion) 1.2.递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编 ...

  8. 算法与数据结构学习(46)-B树、B+树和B*树

    B树的介绍 B-tree树即B树,B即Balanced,平衡的意思.有人把B-tree翻译成B-树,容易让人产生误解.会以为B-树是一种树,而B树又是另一种树.实际上,B-tree就是指的B树. 前面 ...

  9. 算法与数据结构学习(6)-链表(2)

    前言 之前的一个文章我们学习了单向链表的关内容,并且用单向链表的方式实现了水浒英雄的管理.但是这个示例还存在一定的问题. 1.单向链表是死的,也就是说单向链表的存储和显示的顺序都是按照数据的输入顺序决 ...

最新文章

  1. js中正则表达式验证_JS正则表达式的验证
  2. k8s kube-dns和服务发现
  3. 八十一、使用Springboot实现发邮件的需求
  4. boost::python::enum_相关的测试程序
  5. flutter刷新页面_用Flutter实现58App的首页
  6. 旋转轨迹_谁是最可怕的压轴题?——直线运动轨迹
  7. 易语言mysql验证_易语言MySql注册登录
  8. Error解决:hive中的数组越界异常IndexOutOfBoundsException
  9. 如何通过大华sdk采集一帧图像?_EasyData解放数据标注员双手,采集清洗标注一站搞定...
  10. springboot的yaml属性配置文件注入
  11. 适用于大型项目的TinyCircuits,硬件需求较小
  12. 异同点 模拟退火 遗传算法 邻域搜索_遗传算法与模拟退火算法比较
  13. 成为一名CV(计算机视觉)工程师,你需要具备哪些能力?
  14. Ubuntu系统安装搜狗(sougou for linux)输入法
  15. Linux学习笔记1(鸟哥的私房菜)
  16. 数据结构实验报告—学生成绩管理系统(Java实现)
  17. 【洛谷】月赛:Tomoya loves Nagisa-DP找规律
  18. QSplitter设置比例
  19. 互联网金融学习总结(6)——2019年现金贷风控和反欺诈看这篇文章如何规划建设?
  20. 微信网页授权登录报错10003 redirect_uri域名与后台配置不一致,错误码:10003

热门文章

  1. 运用设计模式实现Sql语句动态转换
  2. bmp/gif/jpg图象最底层原理分析
  3. Java把html转成word
  4. ISO认证是什么?| ISO体系认证办理
  5. BERTILO发“富”啦,来元代艺数get你的专属「招财兔」!
  6. ListView中如何优化图片
  7. 超级App,风口浪尖的新机遇
  8. 从心理学和传统文化角度来初步理解个体与环境
  9. 随机梯度下降(SGD)
  10. 网站图标开发指南(精)