有哪些学习算法的入门书籍

酿泉
  • 513

《算法导论》很好很强大,读了,那伪代码实在挺纠结的,读了半天还是无法习惯,只好读下面的自然语言描述,而且过于面面具到反而让人分不清楚主次。

有没有更简单更低级的算法书籍?

回复
阅读 33.1k
5 个回答

原理 入门《编码:隐匿在计算机软硬件背后的语言》

这是一本讲述计算机工作原理的书。

不过,你千万不要因为“工作原理”之类的字眼就武断地认为,它是晦涩而难懂的。作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。 更重要的是,你会因此而获得对计算机工作原理较深刻的理解。这种理解不是抽象层面上的,而是具有一定深度的,这种深度甚至不逊于“电气工程师”和“程序员”的理解。

不管你是计算机高手,还是对这个神奇的机器充满敬畏之心的菜鸟,都不妨翻阅一下《编码:隐匿在计算机软硬件背后的语言》,读一读大师的经典作品,必然会有收获。

我推荐Charles Petzold的《编码》。 在这个充满工具和IDE的年代,很多复杂度已经从程序员那“抽取”走了,这本书一本开眼之作。 – hemil


实战 晋升《编程珠玑》

正如自然界里珍珠出自细沙对牡蛎的磨砺,计算机科学大师 Jon Bentley 以其独有的洞察力和创造力,从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”,成为世界计算机界名刊《ACM通讯》历史上最受欢迎的专栏,最终结集为两部不朽的计算机科学经典名著,影响和激励着一代又一代程序员和计算机科学工作者。

本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法

尽管我不得不羞愧地承认,书中一半的东西我都没有理解,但我真的推荐《编程珠玑》,书中有些令人惊奇的东西。 – Matt Warren


永恒的经典《代码大全》

Steve McConnell 的原作《代码大全》(第1版)是公认的关于编程的最佳实践指南之一, 在过去的十多年间,本书一直在帮助开发人员编写更好的软件。

现在,作者将这本经典著作全新演绎,融入了最前沿的实践技术,加入了上百个崭新的代码示例, 充分展示了软件构建的艺术性和科学性。 McConnell汇集了来自研究机构、学术界以及业界日常实践的主要知识, 把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。

无论您的经验水平如何,也不管您在怎样的开发环境中工作,也无论项目是大是小, 本书都将激发您的思维并帮助您构建高品质的代码。

《大话数据结构》读起来不吃力,推荐

先把数据结构学了嘛 然后看算法导论就比较好了的
对了刘未鹏的博客http://mindhacks.cn/上有几篇讲如何学习算法的文章 很不错 建议看哈

强烈推荐《算法竞赛入门经典》 , 算法大神写给入门人看的 , 有些内容看不懂就先跳过去 , 跟着书做点题 !

Python数据结构与算法设计总结篇 http://hujiaweibujidao.github.io/python/

1.Python数据结构篇

数据结构篇主要是阅读Problem Solving with Python时写下的阅读记录,当然,也结合了部分算法导论中的内容,此外还有不少wikipedia上的内容,所以内容比较多,可能有点杂乱。这部分主要是介绍了如何使用Python实现常用的一些数据结构,例如堆栈、队列、二叉树等等,也有Python内置的数据结构性能的分析,同时还包括了搜索和排序(在算法设计篇中会有更加详细的介绍)的简单总结。每篇文章都有实现代码,内容比较多,简单算法一般是大致介绍下思想及算法流程,复杂的算法会给出各种图示和代码实现详细介绍。这一部分是下面算法设计篇的前篇,如果数据结构还不错的可以直接看算法设计篇,遇到问题可以回来看数据结构篇中的某个具体内容充电一下,嘿嘿。

(1)搜索 简述顺序查找和二分查找,详述Hash查找(hash函数的设计以及如何避免冲突)

(2)排序 简述各种排序算法的思想以及它的图示和实现

(3)数据结构 简述Python内置数据结构的性能分析和实现常用的数据结构:栈、队列和二叉堆

(4)树总结 简述二叉树,详述二叉搜索树和AVL树的思想和实现

2.Python算法设计篇

算法设计篇主要是阅读Python Algorithms: Mastering Basic Algorithms in the Python Language[点击链接可进入Springer下载原书电子版]之后写下的读书总结,原书大部分内容结合了经典书籍算法导论,内容更加细致深入,主要是介绍了各种常用的算法设计思想,以及如何使用Python高效巧妙地实现这些算法,这里有别于前面的数据结构篇,部分算法例如排序就不会详细介绍它的实现细节,而是侧重于它内在的算法思想。这部分使用了一些与数据结构有关的第三方模块,因为这篇的重点是算法的思想以及实现,所以并没有去重新实现每个数据结构,但是在介绍算法的同时会分析Python内置数据结构以及第三方数据结构模块的优缺点,也就意味着该篇比前面都要难不少,但是我想我的介绍应该还算简单明了,嘿嘿,除此之外,里面还有很多关于python开发的内容,精彩不容错过!

这里每篇文章都有实现代码,但是代码我一般都不会分析,更多地是分析算法思想,所以内容都比较多,即便如此也没有包括原书对应章节的所有内容,因为内容实在太丰富了,所以我只是选择经典的算法实例来介绍算法核心思想,除此之外,还有不少内容是原书没有的,部分是来自算法导论,部分是来自我自己的感悟,嘻嘻。该篇对于大神们来说是小菜,请一笑而过,对于菜鸟们来说可能有点难啃,所以最适合的是和我水平差不多的,对各个算法都有所了解但是理解还不算深刻的半桶水的程序猿,嘿嘿。

本篇的顺序按照原书Python Algorithms: Mastering Basic Algorithms in the Python Language的章节来安排的(章节标题部分相同部分不同哟),为了节省时间以及保持原著的原滋原味,部分内容(一般是比较难以翻译和理解的内容)直接摘自原著英文内容。

1.你也许觉得很多内容你都知道嘛,没有看的必要,其实如果是我的话我也会这么想,但是如果只是归纳一个算法有哪些步骤,那这个总结也就没有意义了,我觉得这个总结的亮点在于想办法说清楚一个算法是怎么想出来的,有哪些需要注意的,如何进行优化的等等。

2.你也许还会说算法导论不是既权威又全面么,基本上每个算法都还有详细的证明呢,读算法导论岂不更好些,当然,你如果想读算法导论我不拦着你,读完了感觉自己整个人都不好了别怪小弟没有提醒你哟,嘻嘻嘻,左一个性质右一个定理实在不适合算法科普的啦,没有几个人能够坚持读完的。

3.如果你细读本系列的话我保证你会有不少收获的,需要看算法导论哪个部分的地方我会给出提示的,嘿嘿。温馨提示,精彩内容从第4节开始哟,么么哒 O(∩_∩)O~

(1)Python Algorithms - C1 Introduction

本节主要是对原书中的内容做些简单介绍,说明算法的重要性以及各章节的内容概要。

(2)Python Algorithms - C2 The basics

本节主要介绍了三个内容:算法渐近运行时间的表示方法、六条算法性能评估的经验以及Python中树和图的实现方式。

(3)Python Algorithms - C3 Counting 101

原书主要介绍了一些基础数学,例如排列组合以及递归循环等,但是本节只重点介绍计算算法的运行时间的三种方法

(4)Python Algorithms - C4 Induction and Recursion and Reduction

本节主要介绍算法设计的三个核心知识:Induction(推导)、Recursion(递归)和Reduction(规约),这是原书的重点和难点部分

(5)Python Algorithms - C5 Traversal

本节主要介绍图的遍历算法BFS和DFS,以及对拓扑排序的另一种解法和寻找图的(强)连通分量的算法

(6)Python Algorithms - C6 Divide and Combine and Conquer

本节主要介绍分治法策略,提到了树形问题的平衡性以及基于分治策略的排序算法

(7)Python Algorithms - C7 Greedy

本节主要通过几个例子来介绍贪心策略,主要包括背包问题、哈夫曼编码和最小生成树

(8)Python Algorithms - C8 Dynamic Programming

本节主要结合一些经典的动规问题介绍动态规划的备忘录法和迭代法这两种实现方式,并对这两种方式进行对比

(9)Python Algorithms - C9 Graphs

本节主要介绍图算法中的各种最短路径算法,从不同的角度揭示它们的内核以及它们的异同

宣传栏