首页 > 代码库 > javascript数据结构和算法 零(前记+序言)

javascript数据结构和算法 零(前记+序言)

前记


这本书Data Structure and Algorithm with Javascript 

我将其翻译成<< javascript 数据结构和算法>>

为什么这么翻译?而不是翻译成"用javascript实现数据结构和算法"

原因有二:

一个,我觉的它更加简洁,第二个,我是想强调我们在这里使用的是javascript.

我不喜欢一些翻译的人把一个简单的语句进行加工,搞得晦涩难懂.我更喜欢外国人写书的

那种原汁原味.同样,我很喜欢外国人的那种分享精神,它深深的打动了我.

Just try to share !

=========译者注========


序言


    在过去几年里,Javascript通过NodejsSpiderMonkey平台 被越来越多的应用于服务端编程.由于Javascript编程正在移出浏览器端,程序员发现他们需要那些 原本只为传统语言如C++,Java提供的工具.这其中包括链表,,队列,图等经典的数据的数据结构同时包括经典算法如排序算法和查找算法.

这本书讨论如何为服务端的Javascript实现这些数据结构和算法.

    Javascript 程序员将会发现这本书非常的有用,因为它讨论了如何实现这些数据结构和算法,同时包括Javascript实现它们时的一些限制.比如数组实际是对象,过度的全局变量和基于原型的对象系统.

Javascript 被不平等的称为是一门很”糟糕”的编程语言,但是这本书向你证明了怎样用该语言的”精华”部分来实现有效和高效的数据结构和算法.


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


    我姑且认为大多数阅读这本书的读者并没有系统的学习过计算机科学.如果你确实学习过,那么你已经明白为什么学习数据结构和算法如此重要.如果你没有深入的学习计算机科学或者并没有学习过这些话题,那么你应该阅读该模块.

计算机科学家Nicklaus Wirth在他一本编程书的标题中这样写道:”算法+数据结构=编程”.

这个标题就是计算机编程的本质.

任何编程语言只要不是类似于”hello world”这样简单的语句,多多少少都需要某种类型的结构去组织这个程序;伴随着一个或者多个将输入的数据翻译成输出的数据的算法.

对于在学校没有学习过计算机科学的程序员,他们唯一熟知的数据结构就是数组.数组对于解决一些问题是很棒的.但是对于一些复杂的问题来说(事实上它们并没有想象的那么复杂).许多有经验的程序员必须承认,对于一些编程问题,一旦他们想到了合适的数据结构,解决该问题的算法是很容易设计和实现的.


例如:通向高效算法的数据结构就是二叉搜索树.二叉搜索树的设计使在集合中寻找最小值和最大值非常方便,比任何查找算法都要高效.不熟悉二叉搜索树的程序员将使用简单的数据结构,结果导致低效率的程序.

学习算法是非常重要的因为对于解决一个问题往往有很多的算法可以做到.对于开发人员来说了解哪种算法最高效是非常重要的.举个例子,对于列表中的元素排序,往往会有六七种算法可以实现,但是知道快速排序法比选择排序法高效将会使整个排序过程非常高效.

再例如对于列表中的数据用顺序查询或者线性查询是非常简单的,但是如果知道二分排序算法将比顺序查询算法高效两倍将会写出更好的程序.


    深入的学习数据结构和算法教会你的不仅仅是哪个算法或者数据结构是最高效的,还有让你知道对于正在面对的问题,选择哪种算法或者数据结构是最合适的.在写程序的时候需要取舍,尤其是在Javascript环境中,了解本书包含的各种数据结构和算法将会帮助你对任何特殊的编程问题做出合适的决定.