前记

这本书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. Qt Creator 源码学习 03:qtcreator.pro

    当我们准备好 Qt Creator 的源代码之后,首先进入到它的目录,来看一下它的源代码目录有什么奥秘. 这里一共有 9 个文件夹和 9 个文件.我们来一一看看它们都是干什么用的. .git: 版本控 ...

  2. 关于http请求指定本地ip

    static void Main(string[] args) { //ssl证书验证问题(没有校验) ServicePointManager.ServerCertificateValidationC ...

  3. HTTP网络协议(二)

    HTTP报文内的HTTP信息 HTTP协议交互的信息被称为HTTP报文,请求端的HTTP报文叫做请求报文,响应端的叫做响应报文.    HTTP为了提升传输速率,其在传输数据时,按照数据原样进行压缩传 ...

  4. [D3] Create DOM Elements with D3 v4

    Change is good, but creating from scratch is even better. This lesson shows you how to create DOM el ...

  5. Storm新特性之Flux

    Storm新特性之Flux Flux是Storm版本号0.10.0中的新组件,主要目的是为了方便拓扑的开发与部署.原先在开发Storm拓扑的时候整个拓扑的结构都是硬编码写在代码中的,当要对其进行改动时 ...

  6. swift 利用 Reflect(字典转模型)

    1.  导入Reflect(字典转模型)框架 2. 让它继承Reflect这个类,如下代码所示: class IWUser: Reflect { /** *  用户的ID */ var idstr:N ...

  7. jedis连接sentinel示例程序

    1.添加依赖pom.xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedi ...

  8. 读<阿里亿级日活网关通道架构演进>有感

    读<阿里亿级日活网关通道架构演进>时对优化方法有些概念不理解,特意搜索了一下,拓展自己的思路. 其中的优化: 优化方法中1,2比较常见,3,4我知道的比较少,很感兴趣.就继续追踪下去: 于 ...

  9. 【Codeforces Round #434 (Div. 2) A】k-rounding

    [链接]h在这里写链接 [题意] 在这里写题意 [题解] 转换一下就是求n和10^k的最小公倍数. [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++ ...

  10. NASM Syntax

    NASM has a simplified syntax designed to let the user code with minimum overhead. In its simplest fo ...