JS数据结构与算法
ECMAScripter
这个作者很懒,什么都没留下…
展开
-
JavaScript函数实现方式大总结
JavaScript函数实现方式大总结,众多的函数实现方式中,你现在用的是哪种?一:例子需求分析实现表单验证功能,验证用户名、邮箱、密码。二:实现方案(13种)①:全局函数方式 function checkName() { // 验证姓名 } function checkEmail() { // 验证邮箱 } function ...原创 2018-03-13 23:00:47 · 2131 阅读 · 2 评论 -
JavaScript排序算法——插入排序算法
// 插入排序-原理解释:从数组第二项开始循环,每次循环取当前项与前边的项对比,符合条件则交换位置。 function insertSort(array) {// 从第二个元素开始循环 for (var i = 1; i < array.length; i++) {// 从当前项开始往前对比 for (...原创 2017-11-09 10:14:54 · 5235 阅读 · 0 评论 -
JavaScript数据结构与算法——基本排序算法
之前以下三种排序算法属于三篇文章,由于都属于基本排序算法,就合并到了一篇,便于对比。1、冒泡排序冒泡排序算法简介: 冒泡排序算法,它是最慢的排序算法之一,但也是一种最容易实现的排序算法。之所以叫冒泡排序是因为使用这种排序算法排序时,数据值会像气泡一样从数组的一端漂浮到另一端。假设正在将一组数字按照升序排列,较大的值会浮动到数组的右侧,而较小的值则会浮动到数组的...原创 2018-05-08 20:15:01 · 4126 阅读 · 6 评论 -
使用JavaScript解答2018第九届蓝桥杯C/C++省赛A组试题
大三时参加过第七届蓝桥杯,转眼已经两年,最近看了看第九届蓝桥杯试题,打算用JavaScript实现一下。题目1标题:分数1/1 + 1/2 + 1/4 + 1/8 + 1/16 + …. 每项是前一项的一半,如果一共有20项, 求这个和是多少,结果用分数表示出来。 类似:3/2 。当然,这只是加了前2项而已。分子分母要求互质。 注意: 需要提交的是已经约分过的分数...原创 2018-05-19 11:35:55 · 1152 阅读 · 1 评论 -
JavaScript数据结构与算法——链表详解(下)
在JavaScript数据结构与算法——链表详解(上)中,我们探讨了一下链表的定义、实现原理以及单链表的实现。接下来我们进一步了解一下链表的其他内容。1、双向链表双向链表实现原理图: 与单向链表不同的是,图中增加了小线部分,每一个节点增加了一个指向前驱节点的属性,这样就实现了双向链表。 双向链表中,删除节点不需要知道待删除节点的前驱节点,只要把待删除节点指向前驱节点的属性指向N...原创 2018-04-23 21:45:59 · 565 阅读 · 3 评论 -
JavaScript算法与数据结构——字典详解
字典是一种以键-值对的形式存储数据的数据结构,接下来我们将使用JavaScript实现字典数据结构。1、定义字典类由于比较字典数据结构比较简单,就直接上代码好了。class Dictionary { constructor () { this.data = [] }}2、add()此方法用于往字典添加元素,需要接受两个参数,键和值 add (...原创 2018-04-30 21:21:27 · 880 阅读 · 0 评论 -
JavaScript数据结构与算法——链表详解(上)
注:与之前JavaScript数据结构与算法系列博客不同的是,从这篇开始,此系列博客采用es6语法编写,这样在学数据结构的同时还能对ECMAScript6有进一步的认识,如需先了解es6语法请浏览http://es6.ruanyifeng.com/1、链表定义链表是一组节点组成的集合。每个节点都使用一个对象的引用指向它的后继,指向另一个节点的引用叫做链。 之前我们介绍过列表,如需回顾...原创 2018-04-23 02:35:05 · 840 阅读 · 2 评论 -
JavaScript数据结构与算法——栈详解
1、栈基本知识栈是一种特殊的列表,栈的元素只能通过列表的一端访问,这一端成为栈顶,栈具有先进后出的特点,要想访问栈底的元素,就必须将上边的元素先拿出来。对栈的操作主要是入栈和出栈,通过push()和pop()实现。通过pop()还能预览栈顶元素,但是返回元素时,会将该元素从栈中删除,所以需要引入peek()方法,返回栈顶元素,而不会将其删除。2、JS中栈的实现从栈的基本知识可以想到...原创 2018-04-06 18:24:46 · 985 阅读 · 0 评论 -
JavaScript数据结构与算法——列表详解(下),基于Nodejs实现一个列表应用
1、上篇回顾:上篇我们实现了一个列表类,并添加了一些属性,实现了比较多的方法,本文章将与大家一起使用列表实现一个图书借阅查询系统。需要使用JavaScript数据结构与算法——列表详解(上)中写好的列表类List()。如需查看List()类代码说明,请查阅本人列表上篇讲解,这里只给出List的源码,以供接下来写调用: function List() { this.listSize ...原创 2018-04-05 14:31:15 · 1811 阅读 · 3 评论 -
JavaScript数据结构与算法——列表详解(上)
列表是一组有序的数据,每个数组中的数据项称为元素。数组相关知识不够了解的伙伴可以阅读本人上篇博客在JavaScript中,列表的元素可以是任意数据类型。列表中可以保存不定数量的元素,实际使用时元素的数量受到程序内存的限制。本文将介绍如何创建一个简单的列表类,将根据给出的列表抽象数据类型定义,实现该抽象数据类型,在列表详解(下)中,将分析几个适合解决的实际问题。1、列表的抽象数据类型定义listSi...原创 2018-04-03 00:02:35 · 1004 阅读 · 1 评论 -
JavaScript数据结构与算法——队列详解(下)
接下来会借助本人另一篇文章JavaScript数据结构与算法——队列详解(上)中实现的队列类及其方法实现一个应用。配对问题需求分析:在一个文件中保存着一份男女混合的数据,名称前以B开头表示男士,以G开头表示女士,将文件中的男女读出来,分别放进一个队列,两两配对(比如排成两队,相对的匹配男女朋友),直至有一方人数为0,若刚好双双配对成功,则显示“全部配对完成”,若有人没配对成功,则显示没...原创 2018-04-09 00:39:50 · 881 阅读 · 0 评论 -
JavaScript数据结构与算法——数组详解(下)
1、二维与多维数组JavaScript只支持一维数组,但是通过在数组里保存数组元素的方式,可以轻松创建多维数组。1.1 创建二维数组二维数组类似一种由行和列构成的数组表格,在JavaScript中创建数组,需要先创建一个一维数组,然后让数组的每个元素也是一个数组,创建二维数组时,起码需要知道要创建的二维数组有多少行,比如: var arr = [] for(var i = 0; i ...原创 2018-04-01 13:12:56 · 522 阅读 · 1 评论 -
JavaScript数组结构与算法——数组详解(中)
迭代器方法在上篇中,我们探讨了很多数组方法,接下来总结一下最后一组方法——迭代器方法。这些方法对数组的每个元素应用一个函数,可以返回一个值、一组值、或者一个新数组。1、不生成新数组的迭代器方法以下这组迭代器方法不产生任何新数组,它们要么对数组中的每个元素执行某种操作,要么返回一个值。1.1 forEach()此方法接受一个函数作为参数,对数组中的每个元素使用该函数。 function squ...原创 2018-03-31 22:13:26 · 1912 阅读 · 3 评论 -
JavaScript数据结构与算法——数组详解(上)
1、JS中的数组 JS中的数组是一个特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数,但是这些数字索引会在内部转换成字符串类型(因为JS对象中的属性名必须是字符串)。数组在JS中只是一种特殊的对象,效率不如其他语言中的数组高。2、使用数组 JS是一种灵活的语言,数组在JS中也是非常灵活的,接下来对数组的使用做一些总结。2.1、创建数组 要使用数组,第一步就是创建,j...原创 2018-03-31 14:39:41 · 1990 阅读 · 3 评论 -
JavaScript数据结构与算法——队列详解(上)
队列基本知识队列是一种与列表很像的数据结构,只是队列只能在尾部插入元素,在队首删除元素。队列用于存放按顺序排列的元素,先进先出,就像食堂排队一样,后来的只能排在后面,先来的先拿饭,一种井然有序的感觉。 对队列的主要操作是入队和出队,即往队尾插入元素以及删除队首元素,此外队列还需要有用于访问队首元素的方法、返回队列长度的方法等等,下面我们将一一实现。JS中队列的实现借助JavaSc...原创 2018-04-08 00:18:17 · 1302 阅读 · 2 评论