当前位置:首页 > 电子书 > 电子书下载 > 程序设计 >
学习JavaScript数据结构与算法 学习JavaScript数据结构与算法
晓峰

晓峰 提供上传

资源
29
粉丝
2
喜欢
431
评论
8

    学习JavaScript数据结构与算法 PDF 原书第3版

    JavaScript电子书
    • 发布时间:2020-01-09 21:19:15

    给大家带来的一篇关于JavaScript相关的电子书资源,介绍了关于JavaScript、数据结构、算法方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小13.6 MB,洛伊安妮编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.6。

  • 学习JavaScript数据结构与算法 PDF 下载
  • 下载地址:https://pan.baidu.com/s/153Gh3OO-l0NOzhWv_bMlT
  • 提取码:nit2
  • 学习JavaScript数据结构与算法

    内容介绍

    这书最先详细介绍了JavaScript語言的基本知识(包含ECMAScript和TypeScript),次之探讨了数组、栈、序列、双端序列和链表等关键的数据结构,紧接着剖析了非空子集、词典和散列表的原理,接下去论述了递归的基本原理、什么叫树及其二叉堆和堆排序,随后详细介绍了图、DFS和BFS优化算法、各种各样排列(冒泡排序、选择排序、插入排序、归并排序、快速排序、记数排列、桶排序和基数排序)和检索(顺序搜索、二分检索和内插检索)优化算法及其任意优化算法,然后详细介绍了分而治之、动态规划、贪心算法和回溯算法等高級优化算法及其函数式编程,*后还详细介绍了怎样测算优化算法的算法复杂度。

    数据结构是电子计算机以便高效率地运用資源而机构统计数据的这种方法。数据结构与优化算法是处理任何程序编写难题的基本。这书用JavaScript語言详细介绍了各种各样数据结构与优化算法,浅显易懂、由浅入深,有利于电子信息科学技术专业的大学生和不久打开职业发展的专业技术人员探寻JavaScript。 相比上个版,这版本增加了“ECMAScript和TypeScript简述”“递归”“二叉堆和堆排序”和“计算机算法与方法”四章,详细介绍了ECMAScript 2018的新特点和TypeScript的基本要素,填补了双端序列、黑红树、堆排序算法,及其记数排列和基数排序等內容,另一个还简述了Fisher-Yates任意优化算法和回溯算法(谜宫耗子难题和数独答题器),等等等等。 - 在数组、栈和队列中申明、复位、加上和删掉原素 - 建立并应用链表、双向链表和循环系统链表 - 用散列表、词典和非空子集储存的原素 - 探寻二叉树和二叉搜索树的使用方法 - 应用冒泡排序、选择排序、插入排序、归并排序和快速排序等优化算法排列数据结构 - 应用顺序搜索和二分检索等优化算法检索数据结构中的原素

    目录

    • 第1章 JavaScript介绍  1
    • 第2章 ECMAScript和TypeScript简述 23
    • 第3章 数组 46
    • 第4章 栈 83
    • 第5章 序列和双端序列 83
    • 第6章 链表 98
    • 第7章 非空子集 117
    • 第8章 词典和散列表 136
    • 第9章 递归 182
    • 第12章 树 169
    • 第12章 二叉堆和堆排序 201
    • 第13章 图 212
    • 第12章 排列和搜索算法 239
    • 第13章 计算机算法与方法 263
    • 第16章 算法复杂度 287

     

    读书笔记

    JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】

    本文实例讲述了JavaScript数据结构与算法之检索算法。分享给大家供大家参考,具体如下:

    javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/
    function qSort(arr){
      if (arr.length == 0) {
        return [];
      }
      var left = [];//存储小于基准值
      var right = [];//存储大于基准值
      var pivot = arr[0];
      for (var i = 1; i < arr.length; i++) {
        if (arr[i] < pivot) {
          left.push(arr[i]);
        } else {
          right.push(arr[i]);
        }
      }
      return qSort(left).concat(pivot, qSort(right));//递归
    }
    /*二分查找法,基本原理如下:
    * 将数组的第一个位置设置为下边界(0).将数组的最后一个元素所在的位置设置为上边界(数组的长度减1)。
    * 若下边界等于或小于上边界,则做如下操作:
    *  (1).将中点设置为(上边界加上下边界) 除以2.
    *  (2). 如果中点的元素小于查询的值,则将下边界设置为中点元素所在下标加1.
    *  (3). 如果中点的元素大于查询的值,则将上边界设置为中点元素所在下标减1.
    *  (4). 否则中点元素即为要查找 的数据,可以进行返回。*/
    function binSearch(arr,data) {
      var lowerBound = 0;
      var upperBound = arr.length - 1;
      while(lowerBound <= upperBound) {
        var mid = Math.floor((upperBound + lowerBound)/2);
        if(arr[mid] < data) {
          lowerBound = mid + 1;
        }else if(arr[mid] > data) {
          upperBound = mid - 1;
        }else {
          return mid;
        }
      }
      return -1;
    }
    /*
    *计算重复次数
    *当binSearch()函数找到某个值时,如果在数据集中还有其他相同的值出现,那么该函数会定位在类似值的附近。
    *换句话说,其他相同的值可能会出现已找到值的左边或右边。
    *如果在数据集中能找到这个值,那么这个函数将开始通过两个循环来统计这个值出现的次数。
    *第一个循环向下遍历数组,统计找到的值出现的次数,当下一个值与要查找的值不匹配时则停止计数。
    *第二个循环向上遍历数组,统计找到的值出现的次数,当下一个值与要查找的值不匹配时则停止计数。
    * */
    function count(arr, data) {
      var count = 0;
      var position = binSearch(arr, data);
      if (position > -1) {
        ++count;
        for (var i = position-1; i > 0; --i) {
          if (arr[i] == data) {
            ++count;
          }
          else {
            break;
          }
        }
        for (var i = position+1; i < arr.length; ++i) {
          if (arr[i] == data) {
            ++count;
          }
          else {
            break;
          }
        }
      }
      return count;
    }
    var nums = [90,43,49,15,23,2,70,23,20,95,69,23,29,26];
    var list = qSort(nums);
    console.log(list);
    var findnum = 23;
    console.log("需要查找的数据为: " + findnum);
    var retVal = binSearch(list, findnum);
    if (retVal >= 0) {
      console.log( "找到 " + findnum + "的位置为: "+retVal);
    }else {
      console.log(" is not in array.");
    }
    console.log(findnum + "重复次数为"+count(list, findnum));
    
    

    使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,可得如下运行结果:

    JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】

    更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》

    希望本文所述对大家JavaScript程序设计有所帮助。

    上一篇:现代操作系统

    下一篇:Web前端开发精品课:HTML与CSS进阶教程

    展开 +

    收起 -

     
    JavaScript 相关内容
    PHP、MySQL与JavaScript学习手册
    PHP、MySQL与JavaScript学习手册 中文第4版

    本书有借助面向对象的编程基础,深入学习PHP。研究MySQL,从数据库结构到复杂查询。掌握JavaScript语言,以及带有jQuery的增强功能。调用Ajax进行后台浏览器/服务器通信等,欢迎免费下载

    立即下载
    JavaScript启示录
    JavaScript启示录 原书完整版

    《JavaScript启示录》无关于JavaScript设计模式,也无关于JavaScript面向对象代码实现。《JavaScript启示录》意图通过考察原生JavaScript对象和不同环境对原生对象的支持和细微差别。

    立即下载
    你不知道的JavaScript(中卷)
    你不知道的JavaScript(中卷) 影印版

    JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解。

    立即下载
    完美图解物联网IoT实操:ESP8266 Arduino,Cordova物联网移动App,JavaScript微控制器编程
    完美图解物联网IoT实操:ESP8266 Arduino,Cordova物联网移动App,JavaScript微控制器编程 影印完整版

    完美图解物联网技术系列》图书是当前物联网开发技术应用的集大成者。本书内容以Arduino和JavaScript为主线,开发物联网应用、手机App和操控微电脑

    立即下载
    JavaScript框架设计
    JavaScript框架设计 全书完整版

    JavaScript,框架设计

    立即下载
    你不知道的JavaScript 下卷
    你不知道的JavaScript 下卷 影印版

    本书讲解JavaScript开发人员不求甚解的大趋势,深入理解语言内部的机制,全面介绍JavaScript中常被人误解和忽视的重要知识点,分为上中下三套,欢迎下载

    立即下载
    JavaScript核心技术开发解密
    JavaScript核心技术开发解密 原书扫描版

    这本书针对JavaScript 中的核心技术,结合前沿开发实践,全面的讲解与分析JavaScript 的内存、函数、执行上下文、面向对象、模块等重点知识

    立即下载
    学习笔记
    网友NO.651001

    JavaScript数据结构与算法之二叉树添加/删除节点操作示例

    本文实例讲述了JavaScript数据结构与算法之二叉树添加/删除节点操作。分享给大家供大家参考,具体如下: function Node(data,left,right) { this.data = data; this.left = left; this.right = right; this.show = show;}function show() { return this.data;}function BST() { this.root = null; this.insert = insert; this.inOrder = inOrder; this.getMin = getMin; this.getMax = getMax; this.find = find; this.remove = remove;}function insert(data) { var n = new Node(data,null,null); if(this.root == null) { this.root = n; }else { var current = this.root; var parent; while(current) { parent = current; if(data current.data) { current = current.left; if(current == null) { parent.left = n; break; } }else { current = current.right; if(current == null) { parent.right = n; break; } } } }}// 中序遍历function inOrder(node) { if(!(node == null)) { inOrder(node.left); console.log(node.show()); inOrder(node.right); }}// 先序遍历 function preOrder(node) { if(!(node == null)) { console.log(node.show()); preOrder(node.left); preOrder(node.right); }}// 后序遍历function postOrder(node) { if(!(node == null)) { postOrder(node.left); postOrder(node.right); console.log("后序遍历"+node.show()); }}// 二叉树查找最小值function getMin(){ var current = this.root; while(!(current.left == null)) { current = current.left; } return current.data;}// 二叉树上查找最大值function getMax() { var current = this.root; while(!(current.right == null)) { current = cu……

    网友NO.800505

    JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】

    本文实例讲述了JavaScript求一组数的最小公倍数和最大公约数常用算法。分享给大家供大家参考,具体如下: 方法来自求多个数最小公倍数的一种变换算法(详见附录说明) 最小公倍数的算法由最大公约数转化而来。最大公约数可通过如下步骤求得: (1) 找到a1,a2,..,an中的最小非零项aj,若有多个最小非零项则任取一个 (2) aj以外的所有其他非0项ak用ak mod aj代替;若没有除aj以外的其他非0项,则转到(4) (3) 转到(1) (4) a1,a2,..,an的最大公约数为aj 写了两个版本的javascript求公倍数和公约数,主要偏重于算法,没有太注意命名,很多就直接写的单字母名称。 0. 简单易懂的循环 function getMin(arr){ var min = Infinity arr.forEach(function(item){ if( item min item !=0 ){ min = item } }) return min}function howMuchZero(arr){ var zerocount = 0 arr.forEach( function(item){ item === 0 ? zerocount++ : zerocount } ) if(zerocount === arr.length -1) { return true } else return false}function maxDivi(arr){ do { var min = getMin(arr) arr = arr.map((item)= item===min? item:item%min ) } while (!howMuchZero(arr)) return getMin(arr)}function minMulti(arr){ var totalMulti = arr.reduce((pre,item)= pre = pre * item ) var brr = arr.map((item)= totalMulti/item ) var brr_maxDivi = maxDivi(brr) return totalMulti/brr_maxDivi} 1. function套function var arr_minMulti, arr_maxdivifunction minMulti(arr){ var tota……

    网友NO.554045

    JavaScript实现的拼图算法分析

    本文实例分析了JavaScript实现的拼图算法。分享给大家供大家参考,具体如下: 学了html5的拖拽事件,相信做出一款小小的拼图游戏也不难吧。就来说一下怎么用drag事件完成拼图游戏吧,当然html5的新方法在IE下是不兼容的。这里我把这个拼图游戏封装成一个小插件,感兴趣的话可以直接copy来用,使用方法很简单。 HTML,3个div里面什么都不用写,分别是用来放拼图,参照图,拼图面吧的。 div id="selectpanel"/divdiv id="orginalimg"/divdiv id="mathpanel"/div CSS,这里CSS基本不用写,要写的话可以把margin和padding归0,最好还是写一下。 *{margin: 0;padding: 0;} 重点javascript脚本(封装部分) function Puzzle(imgWidth,imgHeight,cuttingoffX,cuttingoffY,img){ var selectPanel=document.getElementById("selectpanel");//拼图面板 var mathPanel=document.getElementById("mathpanel");//拼图匹配面板 var orginalImg=document.getElementById("orginalimg");//参照图面板 selectPanel.style.cssText='width: auto;height: auto;border: 2px solid black;overflow: hidden;float: left;margin: 10px;'; mathPanel.style.cssText='width: auto;height: auto;border: 2px solid black;overflow: hidden;float: right;margin: 10px;'; var amount=(imgWidth/cuttingoffX)*(imgHeight/cuttingoffY);//根据自定义每块拼图的宽高,计算拼图的总数量 var jsonPosition=[]; for(var i=0;iamount;i++){//一个数组模拟成一个二维矩阵,用json来存这个矩……

    网友NO.818567

    JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】

    本文实例讲述了JavaScript数据结构与算法之基本排序算法定义与效率比较。分享给大家供大家参考,具体如下: javascript数据结构与算法--基本排序算法(冒泡、选择、排序)及效率比较 一、数组测试平台 javascript数据结构与算法--基本排序(封装基本数组的操作),封装常规数组操作的函数,比如:插入新数据,显示数组数据,还有交换数组元素等操作来调用不同的排序算法 function CArray(numElements) { this.dataStore = []; this.pos = 0;//是一个索引值,默认为0,从第一个开始 this.numElements = numElements;//是保存所有的数组元素 this.insert = insert;//向数组中插入一个元素的方法 this.toString = toString;//显示数组中所有元素 this.clear = clear;//清空数组数据 this.setData = setData;//生成了存储在数组中的随机数字 this.swap = swap;//交换数组中两个元素的位置 this.bubbleSort = bubbleSort; /*将传入的数组,存储在datastore中*/ for (var i = 0; i numElements.length; ++i) { this.dataStore[i] = numElements[i]; }}function setData() { for (var i = 0; i this.numElements; ++i) { this.dataStore[i] = Math.floor(Math.random() * (this.numElements+1)); }}function clear() { for (var i = 0; i this.dataStore.length; ++i) { this.dataStore[i] = 0; }}function insert(element) { this.dataStore[this.pos++] = element;}function toString() { var retstr = ""; for (var i = 0; i this.dataStore.length; ++i)……

    电子书 编程教程 文档 软件 源码 视频

    Copyright 2018-2020 xz577.com 码农之家

    本站所有电子书资源不再提供下载地址,只分享来路

    免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

    版权投诉 / 书籍推广 / 赞助:QQ:520161757