javascript数据结构与算法 零(前记+前言)
前记
这本书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数据结构与算法 零(前记+前言)的更多相关文章
- javascript数据结构与算法---列表
javascript数据结构与算法---列表 前言:在日常生活中,人们经常要使用列表,比如我们有时候要去购物时,为了购物时东西要买全,我们可以在去之前,列下要买的东西,这就要用的列表了,或者我们小时候 ...
- 为什么我要放弃javaScript数据结构与算法(第八章)—— 树
之前介绍了一些顺序数据结构,介绍的第一个非顺序数据结构是散列表.本章才会学习另一种非顺序数据结构--树,它对于存储需要快速寻找的数据非常有用. 本章内容 树的相关术语 创建树数据结构 树的遍历 添加和 ...
- 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组
第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)
定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScr ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第4章 栈
定场诗 金山竹影几千秋,云索高飞水自流: 万里长江飘玉带,一轮银月滚金球. 远自湖北三千里,近到江南十六州: 美景一时观不透,天缘有分画中游. 前言 本章是重读<学习JavaScript数据结构 ...
- JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)
前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...
- JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(图文并茂)
1. 前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 ...
- JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序
1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...
- JavaScript 数据结构与算法之美 - 桶排序、计数排序、基数排序
1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...
随机推荐
- 关于在IISserver上执行asp.net Web程序出现以下 “Could not load file or assembly。。。”问题的
Could not load file or assembly 'System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, Public ...
- Hadoop3.0配置
1.core-site.xml <configuration> <property> <name>fs.default.namenode</name> ...
- android 消息系统Handler、MessageQueue、Looper源代码学习
android消息系统 总体框架如图所看到的 在安卓的消息系统中,每一个线程有一个Looper,Looper中有一个MessageQueue,Handler向这个队列中投递Message,Looper ...
- Understanding Cubert Concepts(一)Partitioned Blocks
Understanding Cubert Concepts(一)Partitioned Blocks Cubert Concepts 对于Cubert,我们要理解其核心的一些概念,比方BLOCK.这些 ...
- u3d demo起步第二章
假设要给一个角色加入寻路组件.那么仅仅须要选中这个角色,Component->Navigation->Nav Mesh Agent就能够加入寻路组件. 然后仅仅要agent.SetDest ...
- iOS数据存储简要笔记
1. 数据存储常用的方式 (1)XML 属性列表(plist)归档 (2)preference(偏好设置) (3)NSKeyedArchiver归档(NSCoding) (4) SQLite3 ...
- 洛谷 偷天换日&&“访问”美术馆
典型的树形DP 按理说是先做“访问美术馆”再做偷天换日. 但是我先做了偷天换日然后再做的“访问”美术馆 DP方程好推,偷天换日在遇到有展品的时候做背包,因为是先做的偷天换日,所以把偷天换日的输入w,c ...
- SpringMvc(4-1)Spring MVC 中的 forward 和 redirect(转)
Spring MVC 中,我们在返回逻辑视图时,框架会通过 viewResolver 来解析得到具体的 View,然后向浏览器渲染.通过配置,我们配置某个 ViewResolver 如下: <b ...
- ios_webView
iOS开发中WebView的使用 在AppDelegate.m文件里 view sourceprint" class="item about" style="c ...
- php实现删除链表中重复的节点
php实现删除链表中重复的节点 一.总结 二.php实现删除链表中重复的节点 题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1 ...