前记

这本书Data Structure and Algorithm with Javascript

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

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

原因有二:

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

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

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

Just try to share !

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

序言

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

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

Javascript 程序猿将会发现这本书很的实用,由于它讨论了怎样实现这些数据结构和算法,同一时候包含Javascript实现它们时的一些限制.比方数组实际是对象,过度的全局变量和基于原型的对象系统.

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

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

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

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

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

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

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

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

学习算法是很重要的由于对于解决一个问题往往有许多的算法能够做到.对于开发者来说了解哪种算法最高效是很重要的.举个样例,对于列表中的元素排序,往往会有六七种算法能够实现,可是知道高速排序法比选择排序法高效将会使整个排序过程很高效.

再比如对于列表中的数据用顺序查询或者线性查询是很easy的,可是假设知道二分排序算法将比顺序查询算法高效两倍将会写出更好的程序.

深入的学习数据结构和算法教会你的不不过哪个算法或者数据结构是最高效的,还有让你知道对于正在面对的问题,选择哪种算法或者数据结构是最合适的.在敲代码的时候须要取舍,尤其是在Javascript环境中,要理解各种数据结构和算法,在这本书将帮助你不管什么做出正确的决定,包括特殊的编程问题.

javascript数据结构与算法 零(前记+前言)的更多相关文章

  1. javascript数据结构与算法---列表

    javascript数据结构与算法---列表 前言:在日常生活中,人们经常要使用列表,比如我们有时候要去购物时,为了购物时东西要买全,我们可以在去之前,列下要买的东西,这就要用的列表了,或者我们小时候 ...

  2. 为什么我要放弃javaScript数据结构与算法(第八章)—— 树

    之前介绍了一些顺序数据结构,介绍的第一个非顺序数据结构是散列表.本章才会学习另一种非顺序数据结构--树,它对于存储需要快速寻找的数据非常有用. 本章内容 树的相关术语 创建树数据结构 树的遍历 添加和 ...

  3. 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组

    第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...

  4. 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)

    定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScr ...

  5. 重读《学习JavaScript数据结构与算法-第三版》- 第4章 栈

    定场诗 金山竹影几千秋,云索高飞水自流: 万里长江飘玉带,一轮银月滚金球. 远自湖北三千里,近到江南十六州: 美景一时观不透,天缘有分画中游. 前言 本章是重读<学习JavaScript数据结构 ...

  6. JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)

    前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...

  7. JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(图文并茂)

    1. 前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 ...

  8. JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序

    1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...

  9. JavaScript 数据结构与算法之美 - 桶排序、计数排序、基数排序

    1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...

随机推荐

  1. OpenWrt配置绿联的usb转Ethernet网口驱动

    这个选择kernel modules中的kmod-usb-net-asix 须要加入网络设备接口.相似建立一个vlan,配置下防火墙之类的.

  2. oled模块的驱动芯片和pcb图

    参考自:http://blog.sina.com.cn/s/blog_57ad1bd20102wtq8.html oled的驱动芯片是:SSD1306驱动芯片,这个芯片嵌入在屏幕里面,从外面看不出来, ...

  3. Java Lock Example – ReentrantLock(java锁的例子)

    Welcome to Java Lock example tutorial. Usually when working with multi-threaded environment, we use ...

  4. linux内核头文件 cdev.h 解析

    遇到一个内核API--cdev_init 就找到这里来了. #ifndef _LINUX_CDEV_H #define _LINUX_CDEV_H #include <linux/kobject ...

  5. 大战C100K之-Linux内核调优篇--转载

    原文地址:http://joyexpr.com/2013/11/22/c100k-4-kernel-tuning/ 早期的系统,系统资源包括CPU.内存等都是非常有限的,系统为了保持公平,默认要限制进 ...

  6. Android Java使用JavaMail API发送和接收邮件的代码示例

    JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...

  7. jtag引脚

    如果不能下载,可能原因也许是电量不足了... 在电力不足的时候,仿真也不能进行... ///////////////////////////////////////////////////////// ...

  8. ArcEngine数据删除几种方法和性能比较

    转自原文 ArcEngine数据删除几种方法和性能比较 一.  几种删除方法代码 1.  查询结果中删除 private void Delete1(IFeatureClass PFeatureclas ...

  9. 博客已迁移至http://blog.csdn.net/lujinhong2/

    http://blog.csdn.net/lujinhong2/ 请继续关注

  10. Linux上制作Window启动盘

    Linux上制作Window启动盘 注意: U盘在Linux中的标签(依具体情况而定:执行df查看) U盘 ----- /dev/sdb4 格式化U盘 建立U盘的启动分区 安装关键工具 ms-sys ...