神奇的数据结构

2015-12-31作者:MICHAEL MCMILLAN(美)编辑:翁小鲁

在前端工程师中,常常有一种声音:“我为什么要学习数据结构与算法?没有数据结构与 算法,我一样很好地完成了工作?”

实际上,算法是一个十分宽泛的概念,我们写的任何程序都可称为算法,甚至往冰箱里面 放一头大象,也要经过开门、放入、关门这样的规划,这也可以视为一种简单的算法。可 以说,简单的算法是人类的本能。而算法知识的学习则是吸取前人的经验,对复杂的问题 进行归类、抽象,帮助我们脱离刀耕火种时代,系统掌握算法的一个过程。

随着自身成长和职业发展,不论是做前端、服务端还是客户端,任何一个程序员都会开始 面对更加复杂的问题,算法和数据结构知识就变得不可或缺了。

我一直认为前端工程师则是最需要重视算法和数据结构基础的人。因为历史原因,不少前 端工程师是从视觉设计、网站编辑转过来的,在学校没有学过相应的基础课程,而数据结 构与算法的经典名著大部分又没照顾到入门的需要,所以前端工程师如果自身不重视算法 和数据结构这样的基础知识,很可能陷入数年从事单一重复劳动毫无成长这样的职业发展 困境。在移动浪潮到来之后,用户体验要求越来越髙,对前端提出了更髙的要求,前端这 个职能,必须提髙自身才能继续发展,未来的网页UI,绝对不是靠几个选择器操作加超链 接就能应付的。越来越复杂的产品和基础库,需要坚实的数据结构与算法基础才能驾驭。

本书对前端工程师是非常好的数据结构与算法入门书,它的难度非常适合前端工程师补习 基础知识。全书仅200页,对于有渴求数据结构与算法的前端工程师来说这是非常不错的 开始。特别值得一提的是每章后面的小练习,题目不多但是非常有可操作性。

在过去的几年中,得益于Node.js和SpiderMonkey等平台,JavaScript越来越广泛地用于 服务器端编程。鉴于JavaScript语言已经走出了浏览器,程序员发现他们需要更多传统语 言(比如C++和Java)提供的工具。这些工具包括传统的数据结构(如链表、栈、队列、 图等),也包括传统的排序和查找算法。本书讨论在使用JavaScript进行服务器端编程时, 如何实现这些数据结构和算法。

JavaScript程序员会发现本书很有用,因为本书讨论了在JavaScript语言的限制下,如何 实现数据结构和算法。这些限制包括:数组即对象、无处不在的全局变量、基于原型的对 象模型等。JavaScript作为一种编程语言,名声有点“不大好”,但是本书展示了如何使用 JavaScript语言中“好的一面”去实现髙效的数据结构和算法,进而为JavaScript正名。

为什么要学习数据结构和算法

我假设本书的读者中,有很多人没接受过正规的计算机科学教育。如果你接受过,那么你 已经知道了学习数据结构和算法为何如此重要。如果你没有计算机科学学位或者没有正规 学习过计算机科学,那么请耐心读完本节。

计算机科学家尼克劳斯•沃思(Nicklaus Wirth)写过一本计算机程序设计教材,书名是 《算法+数据结构=程序》这个书名就概括了计算机编程的精要。除了 “Hello world!”等无关紧要的程序,任何一个有些 规模的程序都需要某种类型的数据结构来保存程序中用到的数据,还需要一个或多个算法 将数据从输入转换为输出。

对于那些没有在学校学习过计算机科学的程序员来说,唯一熟悉的数据结构就是数组。在 处理一些问题时,数组无疑是很好的选择,但对于很多复杂的问题,数组就显得太过简陋 了。大多数有经验的程序员都愿意承认这样一个事实:对于很多编程问题,当他们想出一个合适的数据结构,设计和实现解决这些问题的算法就变得手到擒来。 二叉查找树(BST)就是一个这样的例子。设计二叉查找树的目的是为了方便查找一组数 据中的最小值和最大值,由这个数据结构自然引申出一个查找算法,该算法比目前最好的 查找算法效率还要髙。不熟悉二叉查找树的程序员可能会使用一个更简单的数据结构,但 效率上就打了个折扣。

学习算法非常重要,因为解决同样的问题,往往可以使用多种算法。对于髙效程序员来 说,知道哪种算法效率最髙非常重要。比如,现在至少有六七种排序算法,如果知道快速 排序比选择排序效率更髙,那么就会让排序过程变得髙效。又比如,实现一个线性查找的 算法很简单,但是如果知道有时二分查找可能比线性查找快两倍以上,那你势必会写出一 个更好的程序。

深入学习数据结构和算法,不仅可以知道哪种数据结构和算法更髙效,还会知道如何找出 最适合解决手头问题的数据结构和算法。写程序,尤其是用]avaScript写程序时,经常需 要权衡,知道了本书涵盖的数据结构和算法的优缺点,在解决具体的编程问题时就容易做 出正确的选择。



内容来源:书问

作者[美] 麦克米伦(Michael McMillan) 著;王群锋,杜欢 译
出版人民邮电出版社
定价49元
书籍比价

分享到

扫描二维码 ×

电子纸书

装在口袋里的爸爸. 神奇的乌鸦嘴

杨鹏著
春风文艺出版社[2012] ¥5

神奇的夏令营

王金平
清华大学出版社[2017] ¥13

神奇的中文版Photoshop CC 2017入门书

张松波
清华大学出版社[2017] ¥51

微力无边:神奇的毛细和浸润现象

刘建林
清华大学出版社[2016] ¥21

东方幻境 : 带你领略神奇中国艺术的涂色书

陈伟, 杨静, 编
辽宁科学技术出版社[2016] ¥12

神奇的中文版Photoshop CC 2015入门书

李慧婷
清华大学出版社[2016] ¥55

一年级爱科学-洋葱头的神奇外衣

王维浩 著
春风文艺出版社[2015] ¥6

神奇的数王国.二年级数学真有趣

柔萱, 著
春风文艺出版社[2015] ¥5

神奇的数王国.一年级数学真好玩

柔萱, 著
春风文艺出版社[2015] ¥5

出版业领先的TMT平台

使用社交账号直接登陆

Copyright © 2020 BookAsk 书问   |   京ICP证160134号


注册书问

一键登录

Copyright © 2020 BookAsk 书问   |   京ICP证160134号