原文地址:http://gossipcoder.com/?p=739 作者:陈钢
  
  摸着键盘写这篇东西的直接动力是给程杰刚刚出版的大作《大话数据结构》写个书评,外加利用我这微乎其微的影响力做做广告——怎么说程杰同学也送了我一本亲笔签名的繁体版《大话数据结构》。不过,今天早上看到了刘未鹏的新文章,“知其所以然(三):为什么算法这么难?”,我觉得光写书评不太爽,写点我学算法的失败经历吧,顺带说说程杰同学的这本新书。
  
  说实话,本文的标题是个伪命题。算法是否好学,或者说是否容易学,完全取决于你的学习目标,是要应付下个月的考试,还是准备考个研究生,或者是想搞定二三流公司的笔试,还是想去微软当科学家——当然,不排除有人的目标是图灵奖。不动脑子都能知道,只是应付考试的学习应该是难度最低的,真正在复杂的业务流程中合理的设计和应用高效的算法的难度无疑要高出一截,至于图灵奖——我也不知道,那玩意太遥远。
  
  目标的不同导致了所需的学习资料是完全不同的,《大话数据结构》的封底是这样描述它的目标读者的:
  
  《大话数据结构》适合学过一门编程语言的如下读者:
  在读的大中专计算机专业学生;
  想转行做开发的非科班人员;
  想考计算机专业研究生的应届或在职人员;
  工作后想重温数据结构和算法的程序员;

  显然,从目标读者就能看出,这本书不是给“高手”看的。我曾经扮演过其中的一种角色,“想考计算机专业研究生的应届或在职人员”,不过我那时候读的是一本经典的教材,严蔚敏老师的《数据结构》(其实在《大话》前言中也提及了这本书)。因为所学的专业跟计算机搭界不多,所以在考研前所有的计算机知识来自于三门包罗万象却连点到即止就算不上的课程:计算机导论、计算机软件设计、计算机硬件设计。当时的学习方法就是刘未鹏说的“背”,不管算法和各种数据结构的来龙去脉,也无论能否理解,一律背下来。反正当时的目标就是考研究生。
  
  但我也发现,本为考研究生而短期恶补的知识,应付一般的企业笔试和面试也勉强够了。考研复习其实挺枯燥的,每天重复几乎类似的生活。有天同学说,传说中的华为来学校宣讲。为了调剂一下生活,捏着一页纸的简历就跑去应聘软件开发职位。一轮笔试,几轮面试下来,凭着我两个月恶补的那点数据结构知识,我竟然全部通过了。体验完签约仪式——注意,只是体验了一下,然后回到教室继续备考。
  
  最后,考研的专业课也得了个还不错的成绩。从这方面看,算法、数据结构之类的东西学起来似乎并不难,短时间抱着死板的教材就能应付考试,应付企业的笔试面试。如果能读读《大话》这样通俗易懂的读物,达到这样的目的应该是更加容易。我当时真正的水平怎么样?啥都不会,动态规划都写不完整,分治法之类的东西就更不懂了。NP-complete理论?没听说过。光是背了几篇经典小说的人,看过小说背景介绍的人是写不出什么好东西的。必须要了解别人作品的前前后后方方面面,自己不停地写,不停地想,才有可能真的写出好东西。算法也是如此,弄清楚每个数据结构、算法的每个细节的缘由,才能设计出自己的好算法。但市面上能像刘未鹏的“知其所以然(三):为什么算法这么难?”这样解析算法的书是没有的。即使是刘未鹏写了几篇,要等他攒出一本完整的书,也需要漫长的等待。而且全书每个算法的解析是否都能到这个水平也是个疑问。
  
  程杰兄的《大话》不可能解决这种问题,也没有填补这个空白的企图。应付考试,参加笔试面试,方便看懂开发文档——这才是《大话》能办到,而且办得不错的事情。很难想象如何在公交车上学习严蔚敏老师的《数据结构》或是饿啃《算法导论》,但我今天确实在回家的公交车上读完了两章《大话》。
  
  但如果搞计算机的人都停留在《大话》所要达到的水平,那无疑是一种悲哀。我学算法的经历之所以失败,正是因为如此。为了考试而啃完严蔚敏老师的《数据结构》和一两本考试参考书之后,我再也没有读完一本算法的书,也没有自己写过稍有难度的算法。所以,水平也就一直停留在看看文档,调调函数的水平上。
  
  希望有人能以《大话》为起点,而不是以读完此书为终点;也期望程杰兄能创作出更高水平的佳作。

陈钢同学是我的朋友,在我写作时给予了我很多帮助。此评论写得相当客观,并没有夸大地说好话,而是强调了《大话数据结构》仅仅只是数据结构与算法学习的起步而已。我转帖出来,也是希望读者可以了解,算法要学好,可真不是几日之功。我们都需要不断努力!

转帖:算法好学吗?——《大话数据结构》读者书评相关推荐

  1. C语言数据结构(大话数据结构——笔记1)数据结构绪论、算法、线性表

    [C语言描述]<数据结构和算法> 说是这个教程是按照<大话数据结构>这本书来编写的:数据结构与算法经典书籍--大话数据结构(带配套源码) ↑废话太TM多了,换一个! [搞定数据 ...

  2. 大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 21

    大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 211 第 ...

  3. 《大话数据结构》1、2数据结构、算法

    大话数据结构 大话设计模式 head first设计模式 Java核心技术 卷1 深入理解Java虚拟机(JVM高级特性与最佳实践) 图解HTTP 大话数据结构 数据结构介绍, 算法推导大O阶的方法, ...

  4. 大话数据结构-普里姆算法(Prim)和克鲁斯卡尔算法(Kruskal)

    5 最小生成树   构造连通网的最小代价生成树称为最小生成树,即Minimum Cost Spanning Tree,最小生成树通常是基于无向网/有向网构造的.   找连通网的最小生成树,经典的有两种 ...

  5. 大话数据结构之图-查找算法(C++)

    大话数据结构 Unit7 查找 查找算法举例 代码 #include<iostream> using namespace std;//顺序查找 //a为数组,n为数组长度,key为关键字 ...

  6. 大话数据结构-迪杰斯特拉算法(Dijkstra)和弗洛伊德算法(Floyd)

    6 最短路径   最短路径,对于图来说,是两顶点之间经过的边数最少的路径:对于网来说,是指两顶点之间经过的边上权值之和最小的路径.路径上第一个顶点为源点,最后一个顶点是终点. 6.1 迪杰斯特拉(Di ...

  7. 大话数据结构 第七章 图(二) 最小生成树、最短路径、拓扑排序、关键路径算法

    大话数据结构 第七章 图(二) 最小生成树.最短路径.拓扑排序.关键路径算法 最小生成树 定义 Prim算法 Kruskal算法 最短路径 Dijkstra算法 Floyd算法 拓扑排序 AOV网 拓 ...

  8. 大话数据结构与算法(一)

    大话数据结构与算法-程杰 第一章 数据结构绪论 一.基本概念和术语 数据结构:是相互之间存在一种或者多种特定关系的数据元素的集合: 数据:是描述客观事物的符号,是计算机可以操作的对象,是能够被计算机识 ...

  9. 数据结构与算法笔记(王卓网课+教材+大话数据结构)

    数据结构与算法笔记(王卓网课+教材+大话数据结构) ##最新整理!!! 顺序存储结构的线性表P10-P21 顺序线性表的代码实现 链式线性表笔记 串笔记 绪论.算法(P1-P9)1.4数据起源结构 数 ...

  10. 【Java】 大话数据结构(13) 查找算法(4) (散列表(哈希表))

    本文根据<大话数据结构>一书,实现了Java版的一个简单的散列表(哈希表). 基本概念 对关键字key,将其值存放在f(key)的存储位置上.由此,在查找时不需比较,只需计算出f(key) ...

最新文章

  1. c语言链表找姓,急啊!!!求救了 C语言编一个链表,输出姓名和学号就好
  2. VBA Editor Addins -- VBE插件模板开发众筹
  3. 一个好的软件开发人员的标准
  4. 整理:Android apk 框架 布局 集锦
  5. 基于C API的SQLite3基本数据库操作
  6. [html] html页面中如何实现gif图片重新播放?
  7. Python学习记录——持续更新
  8. SYNCHRONIZE_DRAIN
  9. 基于Python实现自动慢查询分析,邮件自动发送
  10. Android基础控件TextClock和Chronometer的使用
  11. Keil MDK5 破解
  12. uniapp点击图片放大功能
  13. 用 python 调用和风天气的 api 爬取天气预报数据
  14. CentOS利用WebHook实现PHP自动部署Git代码
  15. 开关二极管IN4148
  16. PyQt5实战:你是成熟的软件啦,该有启动画面和加载进度条了!
  17. 迅雷的地址解析--把自己的下载地址变成迅雷链接
  18. Python——绘制柱状图
  19. level set 介绍4(水平集应用)
  20. git 文件夹不显示红色图标和绿色图标的问题

热门文章

  1. 语音识别系统原理介绍----gmm-hmm
  2. 计算机网络超详细笔记(三):数据链路层
  3. 机器学习数学基础之极限
  4. Linux服务器部署javaweb项目,从环境配置,到最终系统运行
  5. HDU4635 Strongly connected
  6. USACO26 moofest 奶牛集会(归并排序)
  7. April Fools Day Contest 2016 F. Ace It!
  8. textarea文本域
  9. 安卓问题报告小记(四):Some projects cannot be imported because they already exist in the workspace...
  10. SQL Server 2005全文索引(full text search)